【发布时间】:2014-03-26 06:54:21
【问题描述】:
即使状态已知,HttpURLConnection.getResponseCode() 怎么会抛出 IOException?
Caused by: java.io.IOException: Server returned HTTP response code: 412 for URL: <my url>
获取响应码不是问题,因为它是写在异常消息中的。
我希望有一个选项来获取状态代码(即使它不是 ~200)而不会出现异常,因此我将能够在我的代码中决定要做什么。
完整的堆栈跟踪:
Caused by: java.io.IOException: Server returned HTTP response code: 412 for URL: <my url>
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1625)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
... my code
更新 我更改了服务器端实现以返回不同的状态代码(303),它现在正在工作(不抛出 IOException)。这意味着它与 412 特别相关。
【问题讨论】:
-
你检查过服务器可能有什么问题吗? en.wikipedia.org/wiki/…
-
什么意思?服务器正常工作并按预期返回 412。我希望能够从连接中获取状态代码而不会引发异常。
-
我无法回答原因,但可以考虑使用更复杂的 HTTP 客户端。
-
你能显示完整的堆栈跟踪吗?
-
@Smutje 如果状态代码是异常消息的一部分,这意味着连接能够获取状态代码,那怎么可能。