码迷,mamicode.com
首页 > 移动开发 > 详细

android 处理302地址

时间:2015-11-17 12:20:28      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

最近项目中需要用到重定向下载,所以找了很多的方法都不合适。因为下载的链接并非单纯的地址,而是需要多次转发的,

在下载的时候用的是URL来打开数据流。但是多次测试并不能对多次跳转的链接打开请求。对于302http状态来说。只有最终的地址才是200才是我们想要的

于是就需要解析该多次跳转的链接。

这里我用到了AndroidHttpClient这个类,百度一下,这个类时sdk2.3后就有了,AndroidHttpClient没有公开的构造函数,只能通过静态方法newInstance()方法来获得AndroidHttpClient对象。
AndroidHttpClient对于DefaultHttpClient做了一些改进,使其更使用用于Android项目:
1.关掉过期检查,自连接可以打破所有的时间限制。
2.可以设置ConnectionTimeOut(连接超时)和SoTimeout(读取数据超时)。
3.关掉重定向。
4.使用一个Session缓冲用于SSL Sockets。
5.如果服务器支持,使用gzip压缩方式用于在服务端和客户端传递的数据。
6.默认情况下不保留Cookie.

AndroidHttpClient不能在主线程中execute,会抛出异常。AndroidHttpClient通过静态方法newInstance 获得实例,参数是代理,不用代理的话填“”。DefaultHttpClient默认是启用Cookie的,AndroidHttpClient默认不启 用Cookie,要使用的话每次execute时要加一个HttpContext参数,并且添加CookieStore。用完后别忘了close不然不能 创建新实例。

以下就是代码:

 1   /**
 2          * @return
 3          * 该方法用于判断最终的链接得出
 4          */
 5         public String getRedirectUrl(String testUrl){
 6             
 7             AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
 8             HttpGet httpGet = new HttpGet(testUrl);
 9             try {
10                 HttpResponse hr  = client.execute(httpGet);
11                 int code = hr.getStatusLine().getStatusCode();
12                 Log.i("ABC", "code:"+code);
13                 if(code != HttpStatus.SC_OK){
14                     Header[] hander = hr.getHeaders("Location");
15                     if(hander != null && hander.length > 0){
16                         String redictUrl = hander[hander.length-1].getValue();
17                         //多次判定重定向
18                         return getRedirectUrl(redictUrl);
19                     }
20                 }
21             } catch (IOException e) {
22                 e.printStackTrace();
23             } finally{
24                 if(client != null){
25                     client.close();
26                 }
27             }
28             return testUrl;
29         }

 

android 处理302地址

标签:

原文地址:http://www.cnblogs.com/taofudemo/p/4969672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!