我有一个java独立应用程序,它通过一个接口公开两个方法:get - 对URL发出GET请求,然后发布 - 向URL发出POST请求。我使用纯Java来实现这些方法(没有Apache HTTP客户端)。
我的问题是,当从服务器返回HTTP错误时,我得到一个IOException客户端(对于所有代码> = 400)。争论这是否是正确的行为(恕我直言,不是这样)是没有意义的。 无论如何,我需要检查IOException是由连接问题引起的,还是由HTTP错误引起的,因为我必须为这两种情况实现不同的行为。有谁知道一个体面的解决方案来检查这个? (通过体面我的意思是不是要检查异常消息“服务器返回的HTTP响应代码”)
非常感谢任何想法。
感谢。
答案 0 :(得分:3)
除了解析异常字符串之外,没有什么可以做的。如果你查看HttpURLConnection的来源:
if (respCode >= 400) {
if (respCode == 404 || respCode == 410) {
throw new FileNotFoundException(url.toString());
} else {
throw new java.io.IOException("Server returned HTTP" +
" response code: " + respCode + " for URL: " +
url.toString());
}
}
你会发现它不是很有帮助。