一個門戶網站的製作的流程:首先,由網頁設計師只做網頁設計,即畫出來網站在瀏覽器中顯示的樣子,然後由前端人員編寫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/");//使用預設的HttpClientHttpClient 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