java被禁止网络访问_【已解决】java或android的网络(爬虫)访问中,如何设置参数,以禁止自动跳转...

已经有了对应的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参数的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值