gpt4 book ai didi

java - url.openStream 有害吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:19:30 25 4
gpt4 key购买 nike

我使用 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 中使用了该方法。 .再者,代码会抛出异常,因此它并不是良好编码实践的堡垒。

最佳答案

openStream() 如果您希望您的类不受 url 类型更改的影响 - 例如,绝对文件路径 (file:///),包含 jar 的资源,以及潜在的其他协议(protocol),甚至可能带有自定义协议(protocol)处理程序 (scotth://foo.bar)。

但是,正如您发现它的抽象度相当高,因此如果您想了解与资源交互的性质的任何细节,您需要openConnection() 和随心所欲。

回复:其他状态代码 - 你可能想看一眼 RFC2616 - 如果您只关心“成功”,您可以检查 String.valueOf(conn.getResponseCode()).startsWith('2')

关于java - url.openStream 有害吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2986767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com