我用的是
java.net.URL.openStream()
方法从服务器检索内容。我最近遇到了一个问题,其中HTTP响应代码指示了一个错误,但是没有抛出异常,流仍然被读取。这导致错误出现在执行的很晚的时候,并被证明是一个红鲱鱼。据我所知,当您使用此方法打开流时,无法检查HTTP响应代码。
我能找到的唯一正确处理这个问题的方法就是获得一个连接
之前
HttpURLConnection conn=(HttpURLConnection) url.openConnection()
#Code updated with scotth's suggestion
if(!String.valueOf(conn.getResponseCode()).startsWith('2'))
throw new IOException("Incorrect response code "+conn.getResponseCode()+" Message: " +getResponseMessage());
rawIn=conn.getInputStream()
InputStream in=conn.getInputStream()
你同意吗?有没有什么好的环境可以安全地使用openStream,或者应该不鼓励使用它。值得注意的是,Sun在他们的应用程序中使用了这种方法
tutorial code for reading directly from a URL
. 同样,代码抛出异常,因此它并不是良好编码实践的堡垒。