2019独角兽企业重金招聘Python工程师标准>>>

简单的网页下载,HttpURLConnection可以完成,但是涉及到用户登录等权限相关问题,就需要涉及Session、Cookies。,就很难使用HttpURLConnection来处理了。Apache开源组织提供了一个HttpClient项目可以处理这些问题。HttpClient关注于如何发送请求、接受请求,以及管理HTTP链接。
使用HttpClient对象来发送请求、接受响应步骤:

  1. 创建HttpClient对象

  2. 如果要发送GET请求,创建HttpGet对象;如果是POST请求,则创建HttpPost对象。

  3. 如果需要添加参数,对于HttpGet直接在构造URL的时候填入参数。对于POST请求,使用setEntity(HttpEntity entity)方法来设置

  4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,此方法返回一个HttpResponse

  5. 调用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请求相关推荐

  1. HttpClient发送get post请求和数据解析

    最近在跟app对接的时候有个业务是微信登录,在这里记录的不是如何一步步操作第三方的,因为是跟app对接,所以一部分代码不是由我写, 我只负责处理数据,但是整个微信第三方的流程大致都差不多,app端说要 ...

  2. Android向EasyN摄像头发送http get请求获取媒体数据响应包

    一.描述 Android实现获取网络摄像头的视频流并且播放,以便实现手机实时监控. 网络摄像头:EsayN(普顺达). 网络:内网.外网应该也也一样,没有测试. 协议文档:ip Camera视音频访问 ...

  3. 使用httpClient发送get\post请求

    2019独角兽企业重金招聘Python工程师标准>>> maven依赖 1 <dependency> 2 <groupId>org.apache.httpco ...

  4. Go使用HTTPClient发送Get Post请求

    Get请求 url := c.Host + WarningNumreq, err := http.NewRequest("GET", url, nil)q := req.URL.Q ...

  5. 用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 ...

  6. [转]android之Apache Http——向服务器发送请求的同时发送参数

    android之Apache Http--向服务器发送请求的同时发送参数 使用Get方法提交: 其他步骤与上一节的操作相符,只是在传送地址的时候发送参数的格式如下: //Sname和Sage是实际的数 ...

  7. apache httpclient 连接 IIB,发送XML请求

    在Message Broker Toolkit建立好消息流之后,需要Java发送请求到ESB服务器,触发消息流的响应,执行消息流之后再返回响应 java端发送请求用到的是apache httpclie ...

  8. HttpClient 发送 HTTP、HTTPS 请求的简单封装

    序 近期这几周.一直在忙同一个项目.刚開始是了解需求.需求有一定了解之后,就開始调第三方的接口.因为第三方给提供的文档非常模糊,在调接口的时候,出了非常多问题,一直在沟通协调,详细的无奈就不说了,因为 ...

  9. 使用HttpClient发送WebService Security(WSS)请求

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 使用Ht ...

最新文章

  1. Python 精选笔试面试习题—sorted 与 sort 单例模式、统计字符个数Count、垃圾回收、lambda函数、静态方法、类方法、实例方法、分布式锁、
  2. MySQLFabric概述
  3. QT的QBufferDataGenerator类的使用
  4. .net集合类的研究--链表—ListDictionary,LinkedListT
  5. Laravel 怎么查看执行的Sql语句
  6. 受半导体短缺及疫情影响,丰田已下调9月10月及当前财年产量预期
  7. 技巧 | 栅格的属性数据和经纬度是分开的两个文件,怎么将它们整合到同一个文件上...
  8. gjrand 4.0 发布,C语言的伪随机数生成器
  9. OpenGLTest
  10. linux下常用文件传输命令(转)
  11. php连接sap笔记
  12. 计算机主机箱组装示意图,电脑主机组装图解
  13. Swift 之横竖屏切换
  14. python中snip_Snip滚动截屏_腾讯Snip For Mac官方下载-华军软件园
  15. python实数符号_下列格式化符号中,用来表示浮点实数的是()。 (6.0分)_学小易找答案...
  16. python字符串的比较
  17. 网游实时对战同步技术三篇
  18. mindspore| lenet模型 推理过程记录
  19. 第八章:善于利用指针
  20. 壳聚糖导管复合辛伐他汀/泊洛沙姆407水凝胶/负载转化生长因子β1温敏性壳聚糖水凝胶的制备

热门文章

  1. C#生成CHM文件(汇总篇)
  2. 2010.6.15 常用数据类型转换总结
  3. eBay是如何进行大数据集元数据发现的
  4. [转载] Maven类包冲突终极三大解决技巧 mvn dependency:tree
  5. [WUST2017]一组简单一点的题目(三) A - Calculate S(n)
  6. 浏览器默认标签样式总结及css初始化程序(转)
  7. Win8.1下VM与Hyper-v冲突解决方法
  8. C/C++中Static的作用详述
  9. testing: mock object
  10. 面试官:说说Java中的信号量?Semaphore