在运行int statusCode = httpClient.executeMethod(postMethod);
的时候需要获得网页响应状态码。
Http状态码通常分为5类,分别以数字1-5开头,由3位整数组成。
1XX主要用作试验用途(之后补充,此次填写2016/12/13);
状态码 | 代码描述 | 处理方式 |
---|---|---|
200 | 请求成功 | 获得响应内容,进行处理 |
201 | 请求完成,结果是创建了新资源,新创建资源的URI可在响应的实体中得到 | 爬虫中不会遇到 |
202 | 请求被接受,但处理尚未完成 | 阻塞等待 |
204 | 服务器端已经实现了请求,但是没有返回新的信息。如果客户是用户代理,则无需为此更新自身的文档视图 | 丢弃 |
300 | 该代码不被HTTP1.0的应用程序直接使用,只是作为3XX类型回应的某人解释。存在多个可用的被请求资源 | 若程序中能够处理,则进一步处理,如果程序中不能处理,则丢弃 |
301 | 请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源 | 重定向分配的URL |
302 | 请求道的资源在一个不同的URL处临时保存 | 重定向到临时的URL |
304 | 请求的资源未更新 | 丢弃 |
400 | 非法请求 | 丢弃 |
401 | 未授权 | 丢弃 |
403 | 禁止 | 丢弃 |
404 | 没有找到 | 丢弃 |
5XX | 服务器端发现自己的错误,不能继续执行请求 | 丢弃 |
如果状态码是3XX意味着需要进行转向操作:
if ((statusCode == HttpStatus.SC_MOVED_TEMPORARILY)||
(statusCode==HttpStatus.SC_MOVED_TEMPORARILY)||
(statusCode==HttpStatus.SC_SEE_OTHER)||
(statusCode==HttpStatus.SC_TEMPORARY_REDIRECT)){
//读取新的URL地址
Header header=postMethod.getRequestHeader("location");
if(header!=null){
String newUrl=header.getValue();
if(newUrl==null||newUrl.equals("")){
newUrl="/";
//使用post转向
PostMethod redirector=new PostMethod(newUrl);
//发送数据,作进一步处理
//.....
}
}
}