gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:48:02 26 4
gpt4 key购买 nike

与 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,所以我的代码可能有误。

谢谢。

最佳答案

Handling GET requests - Apache HttpClient vs java.net.HttpURLConnection如果您需要遍历重定向链,则应为 HttpPost/HttpGet (HttpRequestBase) 设置禁用重定向,例如:

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

之后,您将通过 response.getStatusLine().getStatusCode() 获得预期的 302 响应代码,并且可以像@Ascalonian 所说的那样读取 header

关于java - 处理 GET 请求 - Apache HttpClient 与 java.net.HttpURLConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35979301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com