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字符串,解析出来为咱们所用。咱们明日再见哈