文档章节

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网络类型 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

没有更多内容

加载失败,请刷新页面

加载更多

开源 java CMS - FreeCMS2.8会员注册

项目地址:http://www.freeteam.cn/ 会员注册 打开浏览器,输入http://www.freeteam.cn/register.jsp。 输入注册信息后点击“注册”按钮。...

freeteam
18分钟前
1
0
sql笔记——查询

查询语句: SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]... FROM <表名或这视图名>[,<表名或这视图名>]... [WHERE<条件表达式>] [GROUP BY <列名 1>[HAVING<条件表达式>]] [ORDE......

Carbenson
21分钟前
2
0
OSChina 周二乱弹 —— 哥们之间报恩的想法被上帝实现了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 小小编辑:推荐歌曲《消愁》 《消愁》- 毛不易 手机党少年们想听歌,请使劲儿戳(这里) @过遥 :周一的早上就应该用来补觉,太困了 周末不想...

小小编辑
今天
597
11
MariaDB 服务器在 MySQL Workbench 备份数据的时候出错如何解决

服务器是运行在 MariaDB 10.2 上面的,在使用 MySQL Workbench 出现错误: mysqldump: Couldn't execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, '$."number-of-buckets-specified"'......

honeymose
今天
3
0
apache顶级项目(二) - B~C

apache顶级项目(二) - B~C https://www.apache.org/ Bahir Apache Bahir provides extensions to multiple distributed analytic platforms, extending their reach with a diversity of s......

晨猫
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部