处理 GET 请求 - Apache HttpClient vs java.net.HttpURLConnection.



Apache HttpClient处理GET请求的方式是否与java.net.HttpURLConnection不同?

我尝试向使用两种方法返回重定向的 URL 发出 GET 请求。虽然来自 HttpURLConnection 的响应代码按预期返回 302,但使用 HttpClient 进行相同的调用会导致 200。

下面是我的代码:

// Using Apache HttpClient
HttpClient client = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build();
HttpGet request = new HttpGet(authUrl);
HttpResponse response = client.execute(request);
int responseCode = response.getStatusLine().getStatusCode();  //Returns 200
// Using java.net.HttpURLConnection
URL obj = new URL(authUrl);
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
int responseCode = conn.getResponseCode();  //Returns 302

这是我第一次使用Apache HttpClient,所以我的代码可能是错误的。

谢谢。

处理 GET 请求 - Apache HttpClient vs java.net.HttpURLConnection如果您需要遍历一系列重定向,则应为 HttpPost/HttpGet (HttpRequestBase) 设置禁用重定向,例如:

public void disableRedirect(HttpRequestBase request) {
    request.setConfig(RequestConfig.custom().setRedirectsEnabled(false).build());
}

之后,您将获得预期的 302 响应代码,并response.getStatusLine().getStatusCode()@Ascalonian

尝试关闭自动重定向处理。最有可能的是,HttpClient 重定向到 302 响应中指定的位置,而 HUC 由于某种原因不会

最新更新