gpt4 book ai didi

java - 当返回 2xx 以外的代码时,如何使用 HttpURLConnection 获取响应正文?

转载 作者:IT老高 更新时间:2023-10-28 11:45:34 24 4
gpt4 key购买 nike

如果服务器返回错误,我在检索 Json 响应时遇到问题。请参阅下面的详细信息。

我如何执行请求

我使用 java.net.HttpURLConnection。我设置请求属性,然后执行:

conn = (HttpURLConnection) url.openConnection();

之后,当请求成功时,我得到响应 Json:

br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
sb = new StringBuilder();
String output;
while ((output = br.readLine()) != null) {
sb.append(output);
}
return sb.toString();

...问题是:

当服务器返回 50x 或 40x 等错误时,我无法检索收到的 Json。以下行抛出 IOException:

br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
// throws java.io.IOException: Server returned HTTP response code: 401 for URL: www.example.com

服务器肯定会发送正文,我在外部工具 Burp Suite 中看到它:

HTTP/1.1 401 Unauthorized

{"type":"AuthApiException","message":"AuthApiException","errors":[{"field":"email","message":"Invalid username and/or password."}]}

我可以使用以下方法获得响应消息(即“内部服务器错误”)和代码(即“500”):

conn.getResponseMessage();
conn.getResponseCode();

但我无法检索请求正文...也许库中有一些我没有注意到的方法?

最佳答案

如果响应代码不是 200 或 2xx,请使用 getErrorStream() 而不是 getInputStream()。

关于java - 当返回 2xx 以外的代码时,如何使用 HttpURLConnection 获取响应正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011927/

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