Android之网络接口篇(一)

这篇博客主要介绍了Android中使用HttpClient进行网络请求的操作,包括发送GET请求、处理响应、设置代理及请求重发的策略。示例代码展示了如何创建HttpClient对象、执行请求、处理返回的响应内容以及如何处理网络异常和请求重试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.发送请求,并处理返回的响应:

HttpClient  httpClient = new DefaultHttpClient(); //创建HttpClient对象

HttpGet httpGet = new HttpGet("url");//使用Get方法(post--->HttpPost)

HttpResponse res = httpClient .execute(httpGet);//调用execute()方法发送请求并返回响应

HttpEntity entity = res.getEntity();//HttpClient将响应的内容封装为HttpEntity

if(entity!=null) {

       InputStream instream = entity.getContent();

      //.......后续处理

}

2处理响应 从服务器端返回的响应封装为HttpResponse接口。HttpResponse提供了很多方法来读取和设置响应的内容,包括状态吗、HTTP头、和HTTP内容体。HttpClient推荐使用RensponseHandler来处理返回的响应,这样做的最大的好处是框架负责处理HTTP链接,无论请求是否成功,HTTP链接都会释放并返回给连接管理。使用ResponseHandler处理响应的代码如下所示。

HttpClient httpClient = new DefaultHttpClient();

HttpGet httpGet = new HttpGet("url");

ResponseHandler<byte[]> handler = new ResponseHandler<byte[]>() {

      public byte[] handleResponse(HttpResponse res)  throws ClientProtocolException,IOException {

HttpEntity entity = res.getEntity();

if(entity!=null){

return EntityUtils.toByteArray(entity);

else {

teturn null;

       }

                      }

                                                                                                                                                               } ;

byte[] response = httpClient.execute(httpGet,handler);

  }

3.设置代理 应用程序有时可能需要通过代理访问网络。

DefaultHttpClient httpClient = new DefaultHttpClient();

HttpPost proxy = new HttpPost("url");

httpClient.getPrams().setParameter(ConnRoutePNames.DERAULT_PROXY,proxy);

4.请求重发。在HttpClient框架中提供了HttpRequestRetryHandler接口处理重连的问题,开发者需要实现接口中定义的retryRequest()方法即可。

DefaultHttpClient httpClient = new DefaultHttpClient();

HttpRequestRetryHandler handler = new HttpClientRetyHandler(){

public boolean retryRequest(IOException exception,int executionCount,HttpContext context){

if(executionCount>=5){

return false;

}

if(exception instanceof NoHttpResponseException){

return true;

}

if(exception instanceof SSLHandshakeException){

return false;}

HttpRequest request =(HttpRequest) context.getAttribute(ExecuptionContext.HTTP_REQUEST);

boolean idenpotent =!(request instanceif HttpEntityEnclosingRequest);

if(idempotent) {

return true;

}

return false;

}

};

httpClient.setHttpRequestRetryHandler(handler);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值