已经有了对应的java代码去访问网络了:/** Get response from url, headerDict, postDict */
public HttpResponse getUrlResponse(String url,
HttpParams headerParams,
List postDict)
{
// init
HttpResponse response = null;
HttpUriRequest request = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
if(postDict != null)
{
HttpPost postReq = new HttpPost(url);
try{
HttpEntity postBodyEnt = new UrlEncodedFormEntity(postDict);
postReq.setEntity(postBodyEnt);
}
catch(Exception e){
}
request = postReq;
}
else
{
HttpGet getReq = new HttpGet(url);
request = getReq;
}
if(headerParams != null)
{
request.setParams(headerParams);
}
try{
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, localCookies);
response = httpClient.execute(request, localContext);
List respCookieList = localCookies.getCookies();
System.out.println("Cookies for " + url);
for(Cookie ck : respCookieList)
{
System.out.println(ck);
}
} catch (ClientProtocolException cpe) {
// TODO Auto-generated catch block
cpe.printStackTrace();
} catch (IOException ioe) {
// TODO Auto-generated catch block
ioe.printStackTrace();
}
return response;
}
但是此处想要支持,设置参数,去禁止掉自动跳转。
【解决过程】
1.网上找了下,参考:
->
相关的设置参数是:ClientPNames.HANDLE_REDIRECTS=’http.protocol.handle-redirects’: defines whether redirects should be handled automatically. This parameter expects a value of type java.lang.Boolean. If this parameter is not set HttpClient will handle redirects automatically.
但是貌似还是不知道如何写此处的代码。
2.参考:
可以写出此处的代码:/** Get response from url, headerDict, postDict */
public HttpResponse getUrlResponse(String url,
HttpParams headerParams,
List postDict)
{
// init
HttpResponse response = null;
HttpUriRequest request = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
//disable auto redirect
httpClient.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS, Boolean.FALSE);
if(postDict != null)
但是貌似不是此处想要的,通过
HttpParams headerParams
去设置的。
3.参考:
写出代码:/** Get response from url, headerDict, postDict */
public HttpResponse getUrlResponse(String url,
HttpParams headerParams,
List postDict)
{
// init
HttpResponse response = null;
HttpUriRequest request = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
//disable auto redirect
//httpClient.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS, Boolean.FALSE);
headerParams.setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, Boolean.FALSE);
就可以实现所需要的,通过headerParams去设置对应的参数了。
【总结】
java/android中,是通过HttpParams去设置对应的ClientPNames.HANDLE_REDIRECTS为Boolean.FALSE,以实现禁止自动跳转的。
然后后续的,就是再去完善对应的函数,把别处传递到getUrlResponse的HttpParams,都一点点支持了。
比如外部设置:
autoredirect为false
然后此处就添加上这句:headerParams.setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, Boolean.FALSE);
以及再陆续添加其他header参数的支持。