【发布时间】:2010-06-07 02:24:52
【问题描述】:
我使用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 中使用了该方法。话又说回来,代码会抛出异常,因此它并不完全是良好编码实践的堡垒。
【问题讨论】:
标签: java networking