繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM