用httpclient遇到403错误

前两天看到个问题,抓网页时,返回403,浏览器打开没问题。用的httpclient进行抓取,代码很简单。网上找了一版。

String url="http://localhost:8080/HttpClientDemo/test";  
        HttpGet httpRequest=new HttpGet(url);  
          
        HttpClient httpClient=new DefaultHttpClient();  
        HttpResponse response=httpClient.execute(httpRequest);  
        if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){  
            String result=EntityUtils.toString(response.getEntity());  
            System.out.println(result);  
        }  

要模拟浏览器,就要填http的参数,于是重写一把。

HttpClient client = null;         
		// 对链接超过时的设置
		HttpParams httpParams;
		ClientConnectionManager connectionManager;

		// 数据设置
		// 最大链接数
		int max_connection = Integer.parseInt(ReadSpiderConfig
				.getValue("max_connections"));
		// 获取链接的最大等待时间
		int wait_connection_timeout = Integer
				.parseInt(ReadSpiderConfig.getValue("wait_connection_timeout"));
		// 连接超时时间
		int connection_timeout = Integer.parseInt(ReadSpiderConfig
				.getValue("connection_timeout"));
		// 读取超时
		int read_timeout = Integer.parseInt(ReadSpiderConfig
				.getValue("read_timeout"));
		httpParams = new BasicHttpParams();
		// HttpConnectionParams.
		ConnManagerParams.setMaxTotalConnections(httpParams, max_connection);
		ConnManagerParams.setTimeout(httpParams, wait_connection_timeout);
		//每个路由的最大链接个数,标志对同一站点的并发请求
		ConnPerRouteBean connPerRoute = new ConnPerRouteBean(100);
		ConnManagerParams.setMaxConnectionsPerRoute(httpParams, connPerRoute);

		HttpConnectionParams.setConnectionTimeout(httpParams,
				connection_timeout);
		HttpConnectionParams.setSoTimeout(httpParams, read_timeout);
		SchemeRegistry registry = new SchemeRegistry();
		registry.register(new Scheme("http", PlainSocketFactory
				.getSocketFactory(), 80));

		registry.register(new Scheme("https", SSLSocketFactory
				.getSocketFactory(), 443));

		connectionManager = new ThreadSafeClientConnManager(httpParams,
				registry);
		// httpParams.setParameter(ClientPNames.HANDLE_REDIRECTS,false);
		client = new DefaultHttpClient(connectionManager, httpParams);


这样设置好就OK了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值