想要做一个群博(本身是有的,由于CSDN的rss订阅不符合规范没法进行抓取,自己打算手动实现抓取操作),但是通过HttpClient进行网页源码获取的时候竟然发现返回的是403 forbidden,有点尴尬了。然后网上查找资料之后发现说是要设置请求参数,然后想着是不是HttpClient是不是有什么setParameter方法,找了一下果然有,然后向下面这样设置了参数:
HttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11");
然而无济于事,既然作为一个请求有请求参数,那么是不是应该也有请求头部呢,没错,终于找到解决403 forbidden的办法了,通常情况下,通过浏览器去请求一个网页时,浏览器会将User-Agent包含在请求头部当中,如果直接通过HttpClient去访问一个网页而不设置请求头部,就有可能被服务器拒绝响应,因此只要像下面这样设置了请求头部就可正常访问了:
HttpGet httpgets = new HttpGet(url);
httpgets.setHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3");
这样就可以模拟浏览器去请求一个网页了!
+++++++++++++++++++++++++++++++++++++
题外话
希望通过博客帮助自己去记录一些东西,记录一些问题,或许问题很小,但是需要的时候看看总会有很大的帮助的!