文档章节

android上网 2,使用HttpClient传输

c
 chuiyuan
发布于 2014/04/26 16:05
字数 796
阅读 248
收藏 2
点赞 0
评论 0

一 。使用HttpClient 进行GET连接

  1. 新建 URI

  2. 新GET  请求

  3. 新建 HTTP 客户端

  4. 使用客户端执行操作

  5. 返回处理的结果 

1. URI,这里的URI并不是URI类,而是String类型的uri字符。

String uri = "http://";

2.  新建 GET 请求

只要用HttpGet类就可以了

HttpGet.HttpGet (String uri );

3. 新建 Http 客户端

一般使用默认的就可以了

 DefaultHttpClient.DefaultHttpClient ()

4. 使用客户端执行请求

  HttpClient.execute (HttpUriRequest request ) throws IOException ,ClientProtocolException

这个 方法返回的是HttpResponse类型,也就是响应、。

5. 处理响应

得到了HttpResponse后,在网格上的就完成 了,现在在本地进行响应处理。

HttpResponse.getStatusLine () ;//得到状态行
HttpResponse.getEntity () ;// 得到结果

例子:

protected void doGet() {
		// TODO Auto-generated method stub
		//新建 URL
		String url="http://5billion.com.cn/post.php?name=abcd";
		//新建 GET 请求
		HttpGet httpRequest = new HttpGet (url );
		//新建 http客户端
		HttpClient httpClient = new DefaultHttpClient ();
		//执行请求返回结果 
		try {
			HttpResponse httpResponse = httpClient.execute(httpRequest);
			//判断结果 
			if (httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
				//得到结果 的类型
				String result = EntityUtils.toString(httpResponse.getEntity());
				textView.setText(result);
			}else {
				textView.setText("应答错误  :"+httpResponse.getStatusLine().toString());
			}
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}



二。使用HttpCLient进行POST连接

    使用POST连接与GET连接不同的地方参数 的传递。在POST中,参数 的传递用 NameValuePair 类,实质也就是HashMap。

     POST与GET不同的地方 在于请求的建立

1 。新建 HttpPost请求

HttpPost.HttpPost( String uri );

2.  新建 保存参数的数据 结构 

在POST中传递的是NameValuePair类,仅仅保存一个肯定是不够的,所以真正传递的是一个列表,表中每一个对象 都是一个NameValuePair。如下

新建 一个列表 来保存NameValuePair。

 List<NameValuePair> params = new ArrayList <NameValuePair >();
 //新建真正 的数据 ,以名值 对的形式保存
 BasicNameValuePair.BasicNameValuePair (String name ,String value );
 //将名值 对加入 到列表 中
 List.add(NameValuePair  object);

3. 为参数 设置编码 方式 

最后将之前 新建 好的List对象 加入 到HttpPost对象 中

UrlEncodedFormEntity.UrlEncodedFormEntity (List <?extends NameValuePair>parameters ,String encoding )throws UnsupportedEncodingException

第一个参数 是要编码 的参数 ,第二个是设置编码 的方式 ,可以使用HTTP.UTF_8,  HTTP,UTF_16


4. 将参数 加入 到请求中

HttpEntityEnclosingRequestBase.setEntity (HttpEntity entity );

接下来的工作就一样了

5.新建 http客户端

DefaultHttpClient.DefaultHttpClient ()

6. 使用客户端执行操作

HttpClient.execute (HttpUriRequest request ) throws IOException ,ClientProtocolException

7 处理响应

这里的处理要按应用的要求 来处理,如将结果以String 显示 

String result - ENtityUtils.toString (httpReqsponse.getEntity());
tv.setText (result );

例子

protected void doPost() {
		// TODO Auto-generated method stub
		//新建 一个URL
		String url ="http://www.baidu.com";
		//新建 POST类请求
		HttpPost httpRequest = new HttpPost(url );
		//新建 要传递的数据结构 
		List <NameValuePair>params = new ArrayList <NameValuePair >();
		//新建 键值对
		BasicNameValuePair pair1 = new BasicNameValuePair ("param","AaBbCcDdEe");
		//将数据 加入 到键值 对中
		params.add(pair1);
		
		try {
			//设置编码 方式 
			HttpEntity entity = new UrlEncodedFormEntity (params ,HTTP.UTF_8);
			httpRequest.setEntity(entity);
			//新建 http客户端
			HttpClient httpClient = new DefaultHttpClient ();
			//执行请求,得到响应
			HttpResponse httpResponse = httpClient .execute(httpRequest );
			//判断响应状态 是否成功
			if (httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
				String result = EntityUtils.toString(httpResponse.getEntity());
				textView.setText(result);
			}
		} 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();
		}
		
	}


© 著作权归作者所有

共有 人打赏支持
c
粉丝 9
博文 92
码字总数 40993
作品 0
海淀
android网络类型 wap代理设置

1、很多人都知道移动提供的两个不同的接入点,即:CMWAP 和 CMNET ,前者是为手机WAP上网而设立的,后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务的。它们在实现方式上并没有任何差别...

caikezhan
2012/07/19
0
1
Android 使用自带的HttpClient进行https请求出现403的解决过程记录

出现的过程 最近在用程序模拟一个web站的https登录,然后进行一些后续操作的小玩意。先使用java程序写测试代码,测试通过移植到android。 java基于httpclient-4.3.1.jar开发。 android端使用...

atearsan
2014/03/05
0
1
android编写访问http的代码

android使用apache httpclient项目实现手机作为http客户端的调用。android使用的是最新的httpclient 4.0版本,网上很多国内的文档是3.x的,调用方式不一样。 httpclient有一个官方教程,见:...

xiahuawuyu
2012/08/06
0
0
android中网络操作使用总结(http)

Android是作为智能手机的操作系统,我们开发的应用,大多数也都需要连接网络,通过网络发送数据、获取数据,因此作为一个应用开发者必须熟悉怎么进行网络访问与连接。通常android中进行网络连...

码农明明
2014/05/22
0
6
Android 浅谈HttpClient工具类

在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务。你可以把HttpClient想象成一个浏览器,通过它的...

Jonson
2013/07/25
0
3
HttpClient和HttpURLConnection的区别

Android 提供两个HTTP客户端,分别是HttpURLConnection客户端和Apache的HttpClient,android的AndroidHttpClient是对HttpClient的实现。这两个HTTP客户端都支持HTTPS协议、流媒体的上传和下载...

Callen
2015/08/09
0
0
android使用HttpClient和URLConnection获取网页内容

今天开始android网络编程,平时做的android整机开发这块,基本上不大需要接触android网络变成这块知识,还是得熟悉熟悉。 本文要讲的是使用URLConnection对象和HttpClient组件访问网络以及获...

幸子
2014/03/27
0
1
Android也架构之三:简单工厂模式优化网络请求

很悲催,我们在《Android也架构之二:单例模式访问网络》 用httpConnect的方式去访问网络,而且能够正常获取数据了,可是老板能,技术出生,他要求我重新用httpClient去获取获取网络数据,童...

理工男海哥
2012/08/21
0
0
Android网络编程之Http通信

Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序。以下是本人在学习中的总结与归纳。 1. HttpURLConnection接口 首先需要明确的是,Http通信中的POST和GET请求方式的...

xiahuawuyu
2012/07/19
0
0
使用单例模式实现自己的HttpClient工具类

引子 在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务。你可以把HttpClient想象成一个浏览器,通过...

moz1q1
2015/04/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql导入导出包括函数或者存储过程

mysql导入导出包括函数或者存储过程 2012-11-16 10:12:20 0个评论 收藏 我要投稿 mysql导入导出包括函数或者存储过程 1.mysql导出整个数据库 mysqldump -h hostname -u username -p databas...

rootliu
6分钟前
0
0
Hyperledger Fabric 客户端开发一

前面介绍了hyperledger Fabric 安装, Chaincode的开发和运维, 现在来说说hyperledger fabric的客户端相关的开发。hyperledger 的客户端开发, 实际上指的是Chaincode的客户端开发。 同传统...

十一月不远
10分钟前
0
0
第18章 Linux集群架构

keepalived介绍 在这里使用keepalived来实现高可用集群,因为heartbeat在centos6上有一些问题,影响实验效果 heartbeat 切换的时候,会不是很及时——>比如:主 已经宕机了,但 从 却一直启动...

Linux学习笔记
11分钟前
0
0
awk常用的几条命令组合

前言 最近在生产上查问题,也是练就了一下awk的命令。 生产上的数据安全性要求比较高,一般要拿到测试环境都需要脱敏,但是脱敏的数据会有很多程序上的不适应。 所以有时候查询问题,查询一条...

码代码的小司机
11分钟前
0
0
python 多版本安装及切换

1.安装必要的扩展 # yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-de 2.下载python3.7源码 # wget https://www.python.org/ftp/python......

青-争
12分钟前
0
0
看看8年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构

微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标...

Java大蜗牛
12分钟前
0
0
CDH的坑之Sqoop导出数据到MySQL

CDH的坑之Sqoop导出数据到MySQL 最近使用Sqoop从Hive导出数据到MySQL中,出现了一系列的问题,下面将这个问题记录一下,避免再度踩坑! 导出语句 sqoop export --connect jdbc:mysql://192....

星汉
15分钟前
0
0
PowerDesigner连接MySQL和逆向工程图

最近想梳理公司项目的表间关系,从项目后台管理系统的操作入手,以及代码的hibernate注解入手,都不算特别尽人意,于是最后还是鼓捣了一下PowerDesigner的逆向工程图,这样更直观一些。 想着...

Oo若离oO
16分钟前
0
0
威胁web应用安全的错误

一般绝大部分的web应用攻击都是没特定目标的大范围漏洞扫描,只有少数攻击确实是为入侵特定目标而进行的针对性尝试。这两种攻击都非常频繁,难以准确检测出来,许多网站的web应用防火墙都无法...

上树的熊
18分钟前
2
0
pypy2 install crypto error

install pycryptodome instead pip install pycryptodome

coord
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部