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

处理GET请求-Apache HttpClient vs java.net.HttpURLConnection,java,httpurlconnection,apache-httpclient-4.x,Java,Httpurlconnection,Apache Httpclient 4.x,与java.net.HttpURLConnection相比,Apache HttpClient处理GET请求的方式是否有所不同 我尝试对URL发出GET请求,该URL使用这两种方法返回重定向。虽然来自HttpURLConnection的响应代码返回了预期的302,但使用HttpClient进行相同的调用会导致200 下面是我的代码: // Using Apache HttpClient HttpClient client = HttpClientBuilder.create().setRedir

与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
这是我第一次使用ApacheHttpClient,所以我的代码可能是错误的


谢谢。

尝试关闭自动重定向处理。最有可能的是,HttpClient重定向到302响应中指定的位置,而HUC由于某种原因没有重定向到该位置 如果需要遍历重定向链,则应为HttpPost/HttpGet(HttpRequestBase)设置禁用重定向,例如:

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

之后,您将使用
response.getStatusLine().getStatusCode()
获得预期的302响应代码,并且可以按照@Ascalonian所说的方式读取标题查看标题中的“位置”-您可以从中获得重定向
for(Header-Header:response.getHeaders(“Location”){redirectLink=Header.getValue();}
我已经试过了。它没有任何“Location”头,因为响应是200,而不是302。