![](/img/trans.png)
[英]Should use of java.net.HttpURLConnection be discouraged as org.apache.http.client.HttpClient is way better ?
[英]Handling GET requests - Apache HttpClient vs java.net.HttpURLConnection
与 java.net.HttpURLConnection 相比,Apache HttpClient 处理 GET 请求的方式是否不同?
我尝试向 URL 发出 GET 请求,该 URL 使用这两种方法返回重定向。 虽然来自 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 与 java.net.HttpURLConnection如果您需要遍历重定向链,您应该为 HttpPost/HttpGet (HttpRequestBase) 设置禁用重定向,例如:
public void disableRedirect(HttpRequestBase request) {
request.setConfig(RequestConfig.custom().setRedirectsEnabled(false).build());
}
之后,您将使用response.getStatusLine().getStatusCode()
获得预期的 302 响应代码,并且可以像@Ascalonian 所说的那样读取标题
尝试关闭自动重定向处理。 最有可能的 HttpClient 重定向到 302 响应中指定的位置,而 HUC 由于某种原因没有
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.