Tom*_*sen 5 java apache-httpclient-4.x
我试图解析一个特定的网站,当我的 java 代码调用它时,我得到了 419 的 HTTP 响应代码。我需要解析响应以查找内容,但我陷入了响应代码。
我尝试使用 apache http 客户端(版本 4.5.6)编写一个 Java 程序来调用我需要解析的网站。我得到的http响应代码是419。
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
HttpGet httpGet = new HttpGet("http://www.website.com");
try (CloseableHttpResponse response1 = httpclient.execute(httpGet)) {
System.out.println(response1.getStatusLine());
HttpEntity entity1 = response1.getEntity();
EntityUtils.consume(entity1);
}
}
Run Code Online (Sandbox Code Playgroud)
它打印出来的结果是这样的:
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
HttpGet httpGet = new HttpGet("http://www.website.com");
try (CloseableHttpResponse response1 = httpclient.execute(httpGet)) {
System.out.println(response1.getStatusLine());
HttpEntity entity1 = response1.getEntity();
EntityUtils.consume(entity1);
}
}
Run Code Online (Sandbox Code Playgroud)
我期待200
HTTP/1.1 419 status code 419
Run Code Online (Sandbox Code Playgroud)
当我将网站更改为谷歌或其他网站时,我得到了这一点。
我通过 HttpClient 库以及 POSTMAN 发出 get 请求,并面临相同的 419 错误。为了解决这个 419 错误,我们需要csrf在提交表单时添加令牌。
但是,如果您仍然想知道如何查找csrf令牌,即使您发出GET请求并面临状态419。就我而言,我通过在 header 中添加令牌解决了问题user-agent: xxxx。
例子:
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
Run Code Online (Sandbox Code Playgroud)
Http客户端代码:
connectionManager = new PoolingHttpClientConnectionManager();
...
...
...
httpClient = HttpClients.custom()
.setConnectionManager(connectionManager)
.setRedirectStrategy(new LaxRedirectStrategy())
.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36")
.build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1194 次 |
| 最近记录: |