Android使用Apache HttpClient发送GET、POST请求
2019独角兽企业重金招聘Python工程师标准>>>
简单的网页下载,HttpURLConnection可以完成,但是涉及到用户登录等权限相关问题,就需要涉及Session、Cookies。,就很难使用HttpURLConnection来处理了。Apache开源组织提供了一个HttpClient项目可以处理这些问题。HttpClient关注于如何发送请求、接受请求,以及管理HTTP链接。
使用HttpClient对象来发送请求、接受响应步骤:
创建HttpClient对象
如果要发送GET请求,创建HttpGet对象;如果是POST请求,则创建HttpPost对象。
如果需要添加参数,对于HttpGet直接在构造URL的时候填入参数。对于POST请求,使用setEntity(HttpEntity entity)方法来设置
调用HttpClient对象的execute(HttpUriRequest request)发送请求,此方法返回一个HttpResponse
调用HttpResponse的getALLHeaders()、getHeaders(String name)等方法可获取服务器响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器响应内容。
注意:
不少地方说可以使用HttpGet和HttpPost共同的setParams(HttpParams params)方法添加请求参数,但是我没有设置成功,网上搜索发现好多人也没成功。Even Apache’s official example uses URIBuilder’s setParameter method to build the params out in the URI,所以没有使用这种方法.
GET请求Demo:
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
|
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textViewShow = (TextView) findViewById(R.id.showText);
//直接在URL后添加请求参数
String url = "http://192.168.1.103/index.php?get1=hello&get2=bay" ;
try {
// 创建DefaultHttpClient对象
HttpClient httpclient = new DefaultHttpClient();
// 创建一个HttpGet对象
HttpGet get = new HttpGet(url);
// 获取HttpResponse对象
HttpResponse response = httpclient.execute(get);
//判断是否链接成功
if (response.getStatusLine().getStatusCode() == 200 ) {
//实体转换为字符串
String content = EntityUtils.toString(response.getEntity());
textViewShow.setText(content);
} else {
textViewShow.setText( "网络错误" );
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true ;
}
}
|
POST请求Demo:
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
|
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textViewShow = (TextView) findViewById(R.id.showText);
String url = "http://192.168.1.103/index.php" ;
HttpClient httpClient = new DefaultHttpClient();
try {
HttpPost post = new HttpPost(url);
List params = new ArrayList();
params.add( new BasicNameValuePair( "get1" , "hello" ));
params.add( new BasicNameValuePair( "get2" , "usrl" ));
post.setEntity( new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse response = httpClient.execute(post);
if (response.getStatusLine().getStatusCode() == 200 ){
String content = EntityUtils.toString(response.getEntity());
textViewShow.setText(content);
} else {
textViewShow.setText( "网络问题" );
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
textViewShow.setText( "UnsupportedEncodingException" );
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
textViewShow.setText( "ClientProtocolException" );
} catch (IOException e) {
// TODO Auto-generated catch block
textViewShow.setText( "IOException" );
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true ;
}
}
|
转载于:https://my.oschina.net/u/993130/blog/271638
Android使用Apache HttpClient发送GET、POST请求相关推荐
- HttpClient发送get post请求和数据解析
最近在跟app对接的时候有个业务是微信登录,在这里记录的不是如何一步步操作第三方的,因为是跟app对接,所以一部分代码不是由我写, 我只负责处理数据,但是整个微信第三方的流程大致都差不多,app端说要 ...
- Android向EasyN摄像头发送http get请求获取媒体数据响应包
一.描述 Android实现获取网络摄像头的视频流并且播放,以便实现手机实时监控. 网络摄像头:EsayN(普顺达). 网络:内网.外网应该也也一样,没有测试. 协议文档:ip Camera视音频访问 ...
- 使用httpClient发送get\post请求
2019独角兽企业重金招聘Python工程师标准>>> maven依赖 1 <dependency> 2 <groupId>org.apache.httpco ...
- Go使用HTTPClient发送Get Post请求
Get请求 url := c.Host + WarningNumreq, err := http.NewRequest("GET", url, nil)q := req.URL.Q ...
- 用HttpClient发送HTTPS请求报SSLException: Certificate for <域名> doesn‘t match any of the subject alternative
目录 1:HttpClient 的https证书验证请求问题 2: post请求示例 3: get请求示例 1:HttpClient 的https证书验证请求问题 最近用http 推送,用apache ...
- [转]android之Apache Http——向服务器发送请求的同时发送参数
android之Apache Http--向服务器发送请求的同时发送参数 使用Get方法提交: 其他步骤与上一节的操作相符,只是在传送地址的时候发送参数的格式如下: //Sname和Sage是实际的数 ...
- apache httpclient 连接 IIB,发送XML请求
在Message Broker Toolkit建立好消息流之后,需要Java发送请求到ESB服务器,触发消息流的响应,执行消息流之后再返回响应 java端发送请求用到的是apache httpclie ...
- HttpClient 发送 HTTP、HTTPS 请求的简单封装
序 近期这几周.一直在忙同一个项目.刚開始是了解需求.需求有一定了解之后,就開始调第三方的接口.因为第三方给提供的文档非常模糊,在调接口的时候,出了非常多问题,一直在沟通协调,详细的无奈就不说了,因为 ...
- 使用HttpClient发送WebService Security(WSS)请求
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 使用Ht ...
最新文章
- Python 精选笔试面试习题—sorted 与 sort 单例模式、统计字符个数Count、垃圾回收、lambda函数、静态方法、类方法、实例方法、分布式锁、
- MySQLFabric概述
- QT的QBufferDataGenerator类的使用
- .net集合类的研究--链表—ListDictionary,LinkedListT
- Laravel 怎么查看执行的Sql语句
- 受半导体短缺及疫情影响,丰田已下调9月10月及当前财年产量预期
- 技巧 | 栅格的属性数据和经纬度是分开的两个文件,怎么将它们整合到同一个文件上...
- gjrand 4.0 发布,C语言的伪随机数生成器
- OpenGLTest
- linux下常用文件传输命令(转)
- php连接sap笔记
- 计算机主机箱组装示意图,电脑主机组装图解
- Swift 之横竖屏切换
- python中snip_Snip滚动截屏_腾讯Snip For Mac官方下载-华军软件园
- python实数符号_下列格式化符号中,用来表示浮点实数的是()。 (6.0分)_学小易找答案...
- python字符串的比较
- 网游实时对战同步技术三篇
- mindspore| lenet模型 推理过程记录
- 第八章:善于利用指针
- 壳聚糖导管复合辛伐他汀/泊洛沙姆407水凝胶/负载转化生长因子β1温敏性壳聚糖水凝胶的制备
热门文章
- C#生成CHM文件(汇总篇)
- 2010.6.15 常用数据类型转换总结
- eBay是如何进行大数据集元数据发现的
- [转载] Maven类包冲突终极三大解决技巧 mvn dependency:tree
- [WUST2017]一组简单一点的题目(三) A - Calculate S(n)
- 浏览器默认标签样式总结及css初始化程序(转)
- Win8.1下VM与Hyper-v冲突解决方法
- C/C++中Static的作用详述
- testing: mock object
- 面试官:说说Java中的信号量?Semaphore