我正在使用该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()
Run Code Online (Sandbox Code Playgroud)
所以你同意吗?安全使用openStream是否有任何好的情况,或者不鼓励使用它.值得注意的是,Sun在其教程代码中使用该方法直接从URL中读取.然后,代码抛出异常,因此它不是良好编码实践的堡垒.