一個門戶網站的制作的流程:首先,由網頁設計師只做網頁設計,即畫出來網站在瀏覽器中顯示的樣子,然后由前端人員編寫Html+CSS+JS來實現網站的動態效果,比如說導航欄的下拉顯示,然后Ajax的局部信息更新等,然后通過后台程序如JSP,PHP, .NET等語言將數據庫中的信息與前台頁面相結合,這樣,一個站就這樣被建好了。而Android客戶端,也是有UI設計師,UI前端,程序構成的,同樣程序這邊的話,最近Html5+CSS3的火熱開啟,很多公司也需要html5+css3進行Android程序的開發了。嗚嗚,搶我的飯碗。雖然說哥也是懂html+css的。嘿嘿,這樣解釋的話,可能大家不清楚,其實木有必要弄清楚網站的建站過程,這里只是給大家普及一下知識,沒必要弄清楚。
基礎知識:我們需要知道,Http協議是基於TCP協議的,而TCP協議是一種有連接,可靠的傳輸協議,如果丟失的話,會重傳。所以這樣的話,就不會有數據的丟失了。而Http協議有三種方法,Get,Post,Head方法,但是用的多的只有Get和Post方法,Get方法是將請求參數放在請求頭中,所以請求的參數在URL中可見,而Post方法是將請求參數放在數據部分,所以在URL中不可見,Post相對來說保密,所以在提交重要信息的時候,用的都是HttpPost方法來實現的,比如說,注冊賬號密碼就是使用的HttpPost,因為賬號密碼需要保密,而上百度搜索安卓巴士,在瀏覽器的地址欄中就會顯示這種URL,其中wd=XXX是經過加密后的安卓巴士,其他的參數也是必須要的請求參數 http://www.baidu.com/s?wd=%E5%AE%89%E5%8D%93%E5%B7%B4%E5%A3%AB&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&inputT=11996。
而在B/S模式中,B代表瀏覽器,S代表服務器,在瀏覽器和服務器的通信之中,因為B/S之間不會一直保持連接,所以才會加入Cookie機制,來辨認所操作的對象。用戶瀏覽網頁的操作如下:當用戶點擊一個連接或者一個按鈕的時候,瀏覽器通過發送一個請求給服務器,然后由服務器接收該請求,然后解析到用戶請求的是哪些內容,然后查找到相關資源,再將數據返回給瀏覽器,由瀏覽器解析數據,然后顯示給用戶看到用戶所需要看到的頁面。所以,Android和B/S模式差不多,其實也就是發送請求,接收數據,然后解析數據,顯示到手機上的過程,沒什么太大的區別,誰讓咱用的是互聯網,用的是TCP/IP協議呢,是吧。要理解是:所有的操作都是向服務器請求數據的過程。
首先,我們要熟悉Android的HttpGet和HttpPost請求。其中Apache公司已經提供了兩個類,叫:HttpGet和HttpPost兩個類。兩個類的用法不同,不解釋貼代碼: 1. 使用HttpGet請求Baidu的主頁: //使用HttpGet方法,把百度的主頁傳入 HttpGet hettpGet = new HttpGet("http://www.baidu.com/"); //使用默認的HttpClient HttpClient hc = new DefaultHttpClient(); try { //執行HttpGet方法,並且獲取返回的響應 HttpResponse response = hc.execute(hettpGet); //如果響應碼為200則表示獲取成功,否則為發生錯誤 if (response.getStatusLine().getStatusCode() == 200) { //s就是獲得的HTML代碼 String s = EntityUtils.toString(response.getEntity()); System.out.println(s); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
這樣就向百度服務器發送了一個HttpGet請求,請求的是百度的搜索首頁,服務器返回來都是Html代碼,只是瀏覽器有解析HTML的功能,將HTML代碼轉換成所顯示的頁面,所以,打印出來的都是HTML代碼。
//使用HttpPost發送請求 HttpPost httpPost = new HttpPost(url); //使用NameValuePaira保存請求中所需要傳入的參數 List<NameValuePair> paramas = new ArrayList<NameValuePair>(); paramas.add(new BasicNameValuePair("a", "a")); try { HttpResponse httpResponse; //將NameValuePair放入HttpPost請求體中 httpPost.setEntity(new UrlEncodedFormEntity(paramas, HTTP.UTF_8)); //執行HttpPost請求 httpResponse = new DefaultHttpClient().execute(httpPost); //如果響應碼為200則表示獲取成功,否則為發生錯誤 if (httpResponse.getStatusLine().getStatusCode() == 200) { String s = EntityUtils.toString(httpResponse .getEntity());} } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
這樣就發送了一個HttpPost請求了。簡單吧。所有的獲取數據操作基本上都是在HttpGet和HttpPost上拓展開的,然后發送了請求之后呢,服務器就會接受到一個請求了,服務器接收到請求就會通過方法來接收到 在Android客戶端中發送的參數,並且通過后台程序來解析參數,然后通過數據庫查找到所需要的信息,然后通過PHP后台將數據處理成JSON數據格式返回給HttpResponse的Entity,然后通過EntitiyUtils.toString方法來將Entity轉化成為String對象,然后所得到的String對象呢就是一個JSON數據了。接下來的事情就是JSON數據的解析啦。
最后簡單說一下動態建站的過程吧:頁面分為兩種,一種靜態的,一種動態的,現在靜態的站基本上都沒了,全是動態的了,靜態頁面全是用Html+CSS寫的,只能實現簡單的從一個頁面打開另外一個頁面,沒有與服務器進行數據交互的過程,只是進行簡單的加載靜態頁面,不會有數據從數據庫里面進行差刪改查等操作,並且不用使用模板生成器生成文件,再將文件內容返回給瀏覽器呢而其中呢,而動態建站的過程就是這樣的:首先由發送請求給服務器,然后服務器通過數據庫查詢數據,然后再將查詢出來的數據與模板生成器結合,生成一個.php文件,然后瀏覽器會將php文件解析成為html然后顯示在瀏覽器上顯示。
歡迎熱愛安卓開發者加入群共同進步。
南京群 220818530,
武漢群121592153,,杭
州群253603803,
廈門群253604146,
湖南群217494504,
大連群253672904
青島群 257925319
青島群 257925319