gpt4 book ai didi

java - Java HttpURLConnection.getInputStream但获得401 IOException

转载 作者:太空宇宙 更新时间:2023-11-04 10:50:33 25 4
gpt4 key购买 nike

我正在用Java为CouchDB编写REST客户端。以下代码应该非常标准:

    this.httpCnt.connect();
Map<String, String> responseHeaders = new HashMap<>();
int i = 1;
while (true){
String headerKey = this.httpCnt.getHeaderFieldKey(i);
if (headerKey == null)
break;
responseHeaders.put(headerKey, this.httpCnt.getHeaderField(i));
i++;
}
InputStreamReader reader = new InputStreamReader(this.httpCnt.getInputStream());
StringBuilder responseBuilder = new StringBuilder();
char[] buffer = new char[1024];
while(true){
int noCharRead = reader.read(buffer);
if (noCharRead == -1){
reader.close();
break;
}
responseBuilder.append(buffer, 0, noCharRead);
}


我想测试身份验证失败时会发生什么。但是,如果身份验证失败,则在调用HttpURLConnection的 getInputStream时,我会直接得到IOException,表示服务器响应401。我想,如果服务器响应了某些内容,无论成功还是失败,它都应该能够读取服务器返回的内容。而且我确定在这种情况下,服务器确实会在主体中返回一些文本,因为如果我使用curl对服务器执行 GET且身份验证失败,我将得到一个JSON对象作为响应主体,其中包含一些错误消息。

即使是401,还有什么方法可以获取响应正文?

最佳答案

参见this question

“根据Javadocs,HttpURLConnection.getErrorStream方法将返回InputStream,该InputStream可用于从错误条件(例如404)中检索数据。”

关于java - Java HttpURLConnection.getInputStream但获得401 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930731/

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