标签:
Apache包是对android联网访问封装的很好的一个包,也是android访问网络最常用的类。
下面分别讲一下怎么用HttpClient实现get,post请求。
1.Get 请求
1
2
3
4
5
|
HttpClient hClient = new DefaultHttpClient(); httpResponse = hClient.execute(get); |
2.Post 请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
Map<String, String> map = new HashMap<String, String>(); map.put( "id" , id); map.put( "name" , name); map.put( "permission" , String.valueOf(permission)); List<NameValuePair> list = new ArrayList<NameValuePair>(); if (map != null && !map.isEmpty()){ for (Map.Entry<String, String> entry : map.entrySet()){ //迭代器 //键值对 NameValuePair nameValuePair = new BasicNameValuePair(entry.getKey(), entry.getValue()); list.add(nameValuePair); } } UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list ,encode); //使用post方式提交数据 HttpPost post = new HttpPost(path); post.setEntity(entity); //请求体中 //默认客户端 HttpClient client = httpClient; HttpResponse httpResponse = client.execute(post); |
3.代码实例:
先是get请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.DefaultHttpClientConnection; import org.apache.http.impl.client.DefaultHttpClient; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private Button requestButton; private HttpResponse httpResponse; private HttpEntity entity; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); requestButton = (Button) findViewById(R.id.requestButton); requestButton.setOnClickListener( new OnClickListener() { public void onClick(View v) { new Thread( new Downtest()).start(); } }); } class Downtest implements Runnable{ public void run() { //生成一个请求对象,请求 //生成一个Http客户端对象 HttpClient hClient = new DefaultHttpClient(); //使用Http客户端发送请求对象 InputStream inputStream = null ; try { httpResponse = hClient.execute(get); //httpResponse返回的响应 //返回的响应数据就放在里边 entity = httpResponse.getEntity(); inputStream = entity.getContent(); BufferedReader reader = new BufferedReader( new InputStreamReader(inputStream)); String result = "" ; String line = "" ; while ((line = reader.readLine())!= null ){ result = result+ line; } System.out.println(result); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { inputStream.close(); } catch (Exception e){ e.printStackTrace(); } } } } } |
再是post请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
public class AccountHttpUtils { //private static String PATH = "http://192.168.253.1:8088/CallName/servlet/AccountServler"; private static HttpClient httpClient; public AccountHttpUtils(HttpClient httpClient) { this .httpClient = httpClient; } public static String sendHttpClient(String path,Map<String,String> map,String encode){ List<NameValuePair> list = new ArrayList<NameValuePair>(); if (map != null && !map.isEmpty()){ for (Map.Entry<String, String> entry : map.entrySet()){ //迭代器 //键值对 NameValuePair nameValuePair = new BasicNameValuePair(entry.getKey(), entry.getValue()); list.add(nameValuePair); } } try { //实现将请求的参数封装到表单中, UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list ,encode); //使用post方式提交数据 HttpPost post = new HttpPost(path); post.setEntity(entity); //请求体中 //默认客户端 HttpClient client = httpClient; HttpResponse httpResponse = client.execute(post); if (httpResponse.getStatusLine().getStatusCode() == 200 ){ HttpEntity httpEntity = httpResponse.getEntity(); InputStream inputStream = httpEntity.getContent(); return changeInputeStream(inputStream, encode); } } 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(); } return "" ; } /** * 将一个输入流转换成字符串 * @param inputStream * @param encode * @return */ private static String changeInputeStream(InputStream inputStream,String encode) { //通常叫做内存流,写在内存中的 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte [] data = new byte [ 1024 ]; int len = 0 ; String result = "" ; if (inputStream != null ){ try { while ((len = inputStream.read(data))!=- 1 ){ data.toString(); outputStream.write(data, 0 , len); } //result是在服务器端设置的doPost函数中的 result = new String(outputStream.toByteArray(),encode); outputStream.flush(); outputStream.close(); inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; } public static String set(String id,String name, int permission) { // TODO Auto-generated method stub Map<String, String> map = new HashMap<String, String>(); map.put( "id" , id); map.put( "name" , name); map.put( "permission" , String.valueOf(permission)); String result = AccountHttpUtils.sendHttpClient(AbstractHttpUtils.PATH+ "servlet/AccountServler" , map, "utf-8" ); System.out.println( "result:" + result); return result; } } |
4.get请求访问的是百度,返回的是百度首页的源代码
post是我的一个小项目中的类
不过结构已经很清晰啦。。。。
标签:
原文地址:http://www.cnblogs.com/HCT118/p/5069139.html