本文介绍了AndroidHttpClient的结构、用法和调用实例。有需要的朋友可以参考一下。
下面给大家展示了AndroidHttpClient结构:
公共最终课程
AndroidHttpClient
扩展对象
实现HttpClient
这个类其实是Google的Apache HttpClient的一个包,一些默认属性是android优化的。
然后Apache的HttpClient是java对HttpUrlConnection的封装,感觉Apache的封装还是不错的。
尤其是HttpEntity,功能非常强大,很好用,在安卓手机上可以上传几百个M文件到服务器,还是不错的。
一: AndroidHttpClient的使用方式
1.创建AndroidHttpClient对象
AndroidHttpClient c=AndroidHttpClient . new instance(' ');
AndroidHttpClient只能通过上面的方法建立,而且里面的参数好像设置成了proxy,如果不是空的话,也可以。
2.使用打开cookies
AndroidHttpClient默认关闭cookies,打开它们的方法如下
AndroidHttpClient c=AndroidHttpClient . new instance(' ');
BasicHttpContext context=new BasicHttpContext();
context . set attribute(client context。COOKIE_STORE,new BasicCookieStore());
尝试{
c.execute(空,上下文);
} catch (IOException e) {
//TODO自动生成的catch块
e . printstacktrace();
}
其中可以在客户端发送请求的同时发送上下文。request方法的第一个参数非常重要,下面将详细解释。
二: HttpUriRequest 使用
1.上面的c.execute(null,context);第一个参数是HttpUriRequest,用于封装请求信息。
HttpUriRequest提供了两个子类供使用。相信你闭着眼睛都能猜出来,没错!也就是HttpGet和HttpPost。
2 .好,我们先来看看HttpGet是怎么用的。
题外话,其实从这个方法的名字就可以看出,get,
Get的意思是获取,所以如果你想从服务器上获取任何数据,就多使用它。
HttpGet提供了三个构造函数:
—— HttpGet()
—— HttpGet ( URI uri)
—— HttpGet(字符串uri)
看上面最后两个构造方法,应该能猜出那个参数的意思,就是want
获取文件的地址!其实第一个没有提供地址,但是HttpGet提供了。
方法可以设置资源地址:http get . seturi(URI uri);
看他具体的初始化方法:
方法1:
尝试{
final String _ URI=' www . Baidu . com ';
http get request get=new http get();
requestGet.setURI(新URI(_ URI));
} catch (URISyntaxException e) {
//TODO自动生成的catch块
e . printstacktrace();
}
方法二:
尝试{
final String _ URI=' www . Baidu . com ';
HttpGet requestGet=new HttpGet(新URI(_ URI));
} catch (URISyntaxException e) {
//TODO自动生成的catch块
e . printstacktrace();
}
模式3:
final String _ URI=' www . Baidu . com ';
http get request get=new http get(_ URI);
3.好吧,当HttpGet对象被创建时,你可以把它放入AndroidHttpClient进行访问。
据说有人用Get访问的时候,可以在后面加上用户名密码什么的吗?其实你加不加?
可以,因为从服务器获取的方式是一样的,但是如果有参数的话我觉得没必要。
直接加在资源地址后面,因为我觉得太丑了。看起来不整洁,哈哈。
然后有人说,有参数怎么办?下面给你解答,HttpPost在现场!
4.4最NB的地方。HttpPost是可以放入一个实体并发送给服务器的。这
实体可以封装各种数据,把要发送的数据封装到实体中,然后调用HttpPost的setEntity方法。
只需将实体放入其中并发送请求。那么我们来解释一下什么样的数据实体可以封装。
三:HttpEntity讲解(重点)
有些同学可能会觉得单词读多了没意思。有照片就好了。既然每个人都有要求,那就满足你。
Android HttpClient调用示例
1. GET
//首先将参数放入列表,然后对参数进行URL编码
ListBasicNameValuePair params=new LinkedListBasicNameValuePair();
params.add(新的基本名称值对(' param1 ','中国'));
参数。add(新的基本名称值对(' param 2 ',' value 2 '));
//对参数编码
string param=urlencodedutils。格式(参数,“UTF-8”);
//baseUrl
字符串基URL=' http://UBS。免费4实验室。com/PHP/method。PHP ';
//将统一资源定位器与参数拼接
http get get method=new http get(基本URL '?'param);
http client http client=新的默认http client();
尝试{
HttpResponse响应=http客户端。execute(get方法);//发起得到请求
Log.i(标记,' resCode=' response。getstatusline().getStatusCode());//获取响应码
Log.i(TAG,' result=' entity utils。tostring(响应。getentity(),' utf-8 ');//获取服务器响应内容
} catch(clientprotocoleexception e){
//TODO自动生成的捕捉块
e。printstacktrace();
} catch (IOException e) {
//TODO自动生成的捕捉块
e。printstacktrace();
}
2. POST
//和得到方式一样,先将参数放入目录
params=new LinkedListBasicNameValuePair();
params.add(新的基本名称值对(' param1 ',' Post方法'));
params.add(新的基本名称值对(' param2 ','第二个参数'));
尝试{
http post post方法=新建http post(基本URL);
post方法。setentity(new UrlEncodedFormEntity(params,' utf-8 '));//将参数填入过帐实体中
HttpResponse响应=http客户端。execute(post方法);//执行邮政方法
Log.i(标记,' resCode=' response。getstatusline().getStatusCode());//获取响应码
Log.i(TAG,' result=' entity utils。tostring(响应。getentity(),' utf-8 ');//获取响应内容
} catch(UnsupportedEncodingException e){
//TODO自动生成的捕捉块
e。printstacktrace();
} catch(clientprotocoleexception e){
//TODO自动生成的捕捉块
e。printstacktrace();
} catch (IOException e) {
//TODO自动生成的捕捉块
e。printstacktrace();
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。