android HTTPclient
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是我的一个小项目中的类
不过结构已经很清晰啦。。。。
android HTTPclient的更多相关文章
- Android HttpClient HttpURLConnection相关介绍
Android HttpClient HttpURLConnection相关介绍 遇到一个问题 在android studio上用HttpClient编写网络访问代码的时候,发现该类无法导入并使用.. ...
- cz.msebera.android.httpclient.conn.ConnectTimeoutException: Connect to /192.168.23.1:8080 timed out(Android访问后台一直说链接超时)
明明之前还是可以运行的练习,过段时间却运行不了,一直说访问后台超时, 对于这个问题我整整弄了两天加一个晚上,心酸...,上网找了很多但是都解决不了,我就差没有砸电脑了. 首先 : 第一步:Androi ...
- Android HttpClient post MultipartEntity - Android 上传文件
转自[http://blog.csdn.net/hellohaifei/article/details/9707089] 在Android 中使用HttpClient,MultipartEntity ...
- Android HttpClient GET或者POST请求基本使用方法(转)
在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务.这里只介绍如何使用HttpCl ...
- android httpClient 支持HTTPS的2种处理方式
摘自: http://www.kankanews.com/ICkengine/archives/9634.shtml 项目中Android https或http请求地址重定向为HTTPS的地址,相信很 ...
- Android HttpClient框架get和post方式提交数据(非原创)
1.fragment_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android& ...
- android httpClient 支持HTTPS的访问方式
项目中Android https请求地址遇到了这个异常,javax.net.ssl.SSLPeerUnverifiedException: No peer certificate,是SSL协议中没有终 ...
- 转 Android HttpClient post MultipartEntity - Android 上传文件
转自 http://blog.csdn.net/hellohaifei/article/details/9707089 在Android 中使用HttpClient,MultipartEntity ...
- Android进阶(三)android httpClient 支持HTTPS的访问方式
项目中Android https请求地址遇到了这个异常(无终端认证): javax.net.ssl.SSLPeerUnverifiedException: No peer certificate 是S ...
随机推荐
- thusc滚粗记
day0 下午到了北京,雾霾还是那么大.. 到宾馆报个到,和哥哥吃了一波饭,去不起西郊...只能去五道口了... 晚上和wyz队长见面,wyz队长好帅啊...没带手机拍照真是个错误TAT day1 今 ...
- 【笔记】CSS高级选择器:nth-child()
详解CSS中:nth-child的用法 前端的哥们想必都接触过css中一个神奇的玩意,可以轻松选取你想要的标签并给与修改添加样式,是不是很给力,它就是“:nth-child”. 下面我将用几个典型的实 ...
- 读书笔记-Android初学笔记
Eclipse [ADT] 源 https://dl-ssl.google.com/android/eclipse Notice that no matter what scenario causes ...
- 1 python学习——python环境配置
1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...
- Python自动化之YAML解析
准备工作 pip install PyYAML import yaml yaml语法规则 想要表示列表项,使用一个短横杠加一个空格.多个项使用同样的缩进级别作为同一列表的一部分 my_dictiona ...
- JAVA8 十大新特性详解
前言: Java8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级.在Java Code Geeks上已经有很多介绍Java 8新特性的文章, 例如Playing with Java ...
- 虚函数列表: 取出方法 // 虚函数工作原理和(虚)继承类的内存占用大小计算 32位机器上 sizeof(void *) // 4byte
#include <iostream> using namespace std; class A { public: A(){} virtual void geta(){ cout < ...
- Win7下同时使用有线和无线时的优先级设置
终于找到这个问题的解决方案了!!!!我是通过方法1改跃点数实现的,方法2无效. http://linshengling.blog.163.com/blog/static/114651912012102 ...
- (keymap设置及eclipse常用快捷键总结)
设置pycharm为Eclipse快捷键后使用总结: Ctrl + O 根据name模糊查找当前文件中类.方法 Alt + (向左箭头或者向右箭头) ,回退or前进到到之前查看或者编辑处 Alt + ...
- monitor disk
#!/bin/bash # #top #Big_USERS - find big disk space users in various directories ################### ...