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字符串,解析出來爲咱們所用。咱們明日再見哈