文档章节

android上网 2,使用HttpClient传输

c
 chuiyuan
发布于 2014/04/26 16:05
字数 796
阅读 250
收藏 2

一 。使用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 使用自带的HttpClient进行https请求出现403的解决过程记录

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

atearsan
2014/03/05
0
1
android网络类型 wap代理设置

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

caikezhan
2012/07/19
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
HttpClient和HttpURLConnection的区别

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

Callen
2015/08/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
20分钟前
0
0
20180921 su与sudo命令、限制root用户通过ssh远程登录

su 命令 用户切换。 su # 切换到root用户su username # 切换到username用户# su 后面加-时,会初始化当前用户的各种环境su - username # 指定用户执行某些命令 su - -c "touch /tm...

野雪球
34分钟前
1
0
Windows 下双 Python 开发环境配置

Windows 下双 Python 开发环境配置作者:老农民(刘启华)QQ: 46715422Email: 46715422@qq.com微信: 46715422 本人曾经在 Windows 下被两个版本环境折腾够呛,现在总结两个 Python...

新疆老农民
昨天
2
0
CentOS7全局安装composer

1. 下载composer-setup.php到当前目录 php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" 2. 安装 php composer-setup.php 3. 将composer设置成全局 mv c......

月夜中徘徊
昨天
3
0
20180920上课截图

小丑鱼00
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部