Android的HTTP方式網絡通訊----HttpClient

   HttpClient也是一種Http的網絡通訊方式,這裏一樣分爲get和post兩種方式,咱們一塊兒來看一下吧。
html

   一:HttpClient方式----get
java

   在這以前咱們一樣用上一篇博文中的服務器文件,用來根據傳入的參數,返回給客戶端信息。具體文件內容以下:
android

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%
    String a = request.getParameter("a");
    String b = request.getParameter("b");
    if(a!=null&&b!=null){
    out.println(a + b);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
    }else {
        out.print("error");
    }
%>

   具體步驟:
服務器

   (1)定義一個String類型的字符串,將服務器地址賦值給他,因爲這裏使用的get方法,因此參數的傳遞會直接顯示在URL路徑上。這裏一樣要注意參數的傳遞方式。具體以下網絡

String strURL = "http://222.27.166.10:8080/MyServer/youcan.jsp?a=hello&b=word";

   (2)建立數據請求對象HttpGet,並根據標誌服務器地址的字符串,實例化請求對象。app

httpGet = new HttpGet(strURL);

   (3)建立客戶端對象,用來發送上面的請求。因爲它是抽象類,須要經過它的子類去實例化他jsp

httpClient = new DefaultHttpClient();

   (4)建立得到響應的對象HttpResponse。用來接收客戶端對象執行請求以後,服務器端給你返回的響應對象。ide

httpResponse = httpClient.execute(httpGet);

   (5)建立接收信息的對象HttpEntity,經過HttpResponse對象的getEntity()方法得到迴應的信息post

httpEntity = httpResponse.getEntity();

   (6)建立輸入流對象,經過HttpEntity對象的getContent方法得到返回信息的內容,經過流對象進行讀取輸出在TextView控件上。url

in =httpEntity.getContent();
                                                                                                                                                                                                                                                                                                                                                     
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
                                                                                                                                                                                                                                                                                                                                                     
            String line = null;
            StringBuffer sb = new StringBuffer();
            while ((line = br.readLine())!=null) {
                sb.append(line);
            }
//          System.out.println(sb.toString());
            tv.setText(sb.toString());

   (7)特別注意的一點:添加網絡權限。

<uses-permission android:name="android.permission.INTERNET"/>

   結果:在模擬器的頻幕上有以下顯示,把兩個字符串拼接在了一塊兒。


二:HttpClient方式----Post

   咱們一樣引用上一個服務器文件,用來返回拼接好的字符串。

   具體操做:

   (1)建立數據請求對象HttpPost,這裏咱們直接經過構造方法中傳入標誌服務器地址字符串的方式,實例化對象。注意這裏的字符串中不能把參數直接寫在後面,而是經過如下的方法來攜帶數據給服務器。

httpPost = new HttpPost("http://222.27.166.10:8080/MyServer/youcan.jsp");

   (2)建立客戶端對象HttpClient

httpClient = new DefaultHttpClient();

   (3)建立泛型爲BasicNameValuePair的List列表,這個泛型表示的內容就是以鍵值對的形式,將傳遞參數的值存儲起來。

List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();
        list.add(new BasicNameValuePair("a", "hello"));
        list.add(new BasicNameValuePair("b","word"));

   (4)建立數據存儲對象UrlEncodedFormEntity,用List存儲的數據實例化UrlEncodedFormEntity對象

urlEncodedFormEntity = new UrlEncodedFormEntity(list);

   (5)給數據請求對象添加傳遞的參數的值

httpPost.setEntity(urlEncodedFormEntity);

   (6)實例化接收響應的對象

httpResponse  = httpClient.execute(httpPost);

   (7)建立接收信息的對象HttpEntity,經過HttpResponse對象的getEntity()方法得到迴應的信息

httpEntity = httpResponse.getEntity();

   (8)建立輸入流對象,經過HttpEntity對象的getContent方法得到返回信息的內容,經過流對象進行讀取輸出在TextView控件上。

in = httpEntity.getContent();
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            String line=null;
            StringBuffer sb=new StringBuffer();
            while ((line = br.readLine())!=null) {
                sb.append(line);
                                                                          
            }
            tv.setText(sb.toString());

   (9)特別注意:要添加網絡通訊權限。

<uses-permission android:name="android.permission.INTERNET"/>

   結果:在模擬器的頻幕上有以下顯示,把兩個字符串拼接在了一塊兒。(結果同上)


   Android中的網絡通訊,頗有用處,好比咱們能夠經過網絡通訊方式得到網絡中Json字符串,解析出來爲咱們所用。咱們明日再見哈

相關文章
相關標籤/搜索