服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

HttpClient get请求在HttpResponse中无法获得Location的问题


发布日期:2024年07月18日
 
HttpClient get请求在HttpResponse中无法获得Location的问题

我通过httpclient的get方法访问通过返回的response的头部的location可以得到服务器的重定向地址(Location)

在java环境下测试都没问题

可是在安卓SDK环境下 却得不到response的location

通过抓包分析发现在android下

httpclient的实例执行get请求后一起连重定向的get方法都执行了

所以最后得到的response是重定向之后地址的get请求的response所以得不到locatioon而且responseCode==而不是在java测试环境下的说明这个时候的response是重定向之后的response

这个时候需要阻止HttpClient的自动重定向方法如下

public static String getLocationMethod(String reqUrl Context context) {

DefaultHttpClient httpclient = new DefaultHttpClient();

String location = null;

int responseCode = ;

try {

final HttpGet request = new HttpGet(reqUrl);

HttpParams params = new BasicHttpParams();

paramssetParameter(redirects false); // 默认不让重定向

// 这样就能拿到Location头了

requestsetParams(params);

HttpResponse response = (request);

responseCode = responsegetStatusLine()getStatusCode();

Header[] headers = responsegetAllHeaders();

if(responseCode==){

Header locationHeader = responsegetFirstHeader(Location);

if (locationHeader != null) {

location = locationHeadergetValue();

}

}

} catch (Exception e) {

eprintStackTrace();

MyLogd(exception= etoString());

}

return location;

}

添加 paramssetParameter(redirects false);之后返回结果如下

ResponseCode=

Date:Sun Jan :: GMT

Server:Abloomy Http Server

Connection:Close

CacheControl:nostore

Pragma:nocaches

LastModified:Sun Jan :: GMT

ContentTyp:text/html; charset=iso

ContentLength:

Expires:Mon Jan :: GM

Location:?wlanacip=&wlanacname=&wlanuserip=&vslanusermac=fac&vslanessid=ABLOOMYWK

               

上一篇:利用httpclient模拟站点的登录发帖回复

下一篇:使用HttpContext的User属性来实现用户验证