android httpresponse jar,利用com.loopj.android.http jar包 发送http请求过程分析

声明:本博客只是为了说明com.loopj.android.http

jar包对http请求的实现方式,这个jar包是第三方封装的一个用于android开发的jar包,它是对apach的提供的一些功能的进一步的封装,所以,本博客只可以帮助你理解com.loopj.android.http

jar包对http请求的实现,却不能在android基于http协议的应用开发上面给你帮助。所以,本博客的阅读对象是想了解com.loopj.android.http

jar包的人,而不是需要实现android http请求的人。

在做项目过程中用到了需要通过android客户端发送http请求的问题,利用com.loopj.android.http

jar包可以轻松实现。但是项目完成之后,回过头来,却对其实现的方式不甚了解。于是花了一些时间反编译了他的jar包,得到了请求的具体过程。。

一、在工程中建一个控制发送请求的UpdateTask类,继承AsyncTask(为了实现请求的同步或异步发送,且防止在主线程中发送请求),重写doInBackground方法,并将请求的内容写在该方法里面。重写onPostExecute方法。

二、每次需要发送请求时,只需要new 一个UpdateTask对象,则可以出发其回调方法,执行doInBackground方法,实现请求的发送。

三、新建一个WebPage类继承AsyncHttpResponseHandler,在WebPage里面写上请求的url,请求类型,需要上传的参数(GET请求中为Query

String)。

四、目前为止,已经完成了代码的请求的发送,余下的就是get(String url, RequestParams params,

HttpResponseHandler responseHandler, boolean

isAsync)方法的执行,这个方法在com.loopj.android.http.AndroidHttpClient类中:

在上面的方法中又调用了3个其他的方法:

1、getUrlWithQueryString(url,

params),这个方法的源码不在展示,他是用来组合url的,就是把上传的参数和原来的url组合,得到一个新的目标url,这个url请求服务器响应的内容才是我们想要的。

2、new HttpGet(getUrlWithQueryString(url,

params)),这个方法的原型是public

HttpGet(String uri),在org.apache.http.client.methods.HttpGet类中,目的是生成一个请求对象。

3、sendRequest方法,这个方法仍在com.loopj.android.http.AndroidHttpClient类中:

这个方法比较长,但是核心就在红色标注的地方,当然,如果是异步的话,则把这个请求放入线程池中等待发送,当要发送的时候,还是要执行和同步一样的过程,在此只言同步,异步的不在赘述。

五、new AsyncHttpRequest(client,

httpContext, uriRequest,

responseHandler).run()方法的执行在com.loopj.android.http.AsyncHttpRequest类中。代码如下:

六、在上面方法的执行中,如果请求发送成功,则会把返回的结果放在response中,然后通过this.responseHandler.sendResponseMessage(response)方法把信息传递出去,上面已经说了,这个方法本身是抽象的,所以必须新建一个类,实现这些方法。

原文:http://www.cnblogs.com/yanhuofenhuang/p/3600909.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值