4.8 处理非HTTP GET请求

优质
小牛编辑
131浏览
2023-12-01

4.8 处理非HTTP GET请求

一般来说,爬虫只会抓取信息展示类的页面,所以基本只会处理HTTP GET方法的数据。但是对于某些场景,模拟POST等方法也是需要的。

0.7.1版本之后,废弃了老的nameValuePair的写法,采用在Request对象上添加Method和requestBody来实现。

Request request = new Request("http://xxx/path");
request.setMethod(HttpConstant.Method.POST);
request.setRequestBody(HttpRequestBody.json("{'id':1}","utf-8"));

HttpRequestBody内置了几种初始化方式,支持最常见的表单提交、json提交等方式。

API说明
HttpRequestBody.form(Map\ params, String encoding)使用表单提交的方式
HttpRequestBody.json(String json, String encoding)使用JSON的方式,json是序列化后的结果
HttpRequestBody.xml(String xml, String encoding)设置xml的方式,xml是序列化后的结果
HttpRequestBody.custom(byte[] body, String contentType, String encoding)设置自定义的requestBody

POST的去重:

从0.7.1版本开始,POST默认不会去重,详情见:Issue 484。如果想要去重可以自己继承DuplicateRemovedScheduler,重写push方法。