gpt4 book ai didi

java - 检查 HTTP 请求中的图像有效性

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

我正在绘制来自 Twitter 的图片。可以从以下形式的 URL 访问图像:

https://pbs.twimg.com/media/BzQXyBJIAAIU6D0.jpg

为了检索图像,我应用了以下代码:

HttpURLConnection httpConnection =  (HttpURLConnection)  url.openConnection (); 
httpConnection.setRequestMethod ("GET");
httpConnection.connect();

int code = httpConnection.getResponseCode();

if (code == HttpURLConnection.HTTP_OK){
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(destinationFile);

byte[] b = new byte[2048];
int length;

while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}

is.close();
os.close();

httpConnection.disconnect();
}

但是,有时会出现这样的图像:

https://pbs.twimg.com/media/By_ui7QIgAE021Z.jpg

格式不正确,尽管 code=200,但我在此处发布的代码不起作用,并出现错误:

Corrupt JPEG data: premature end of data segment
java.io.FileNotFoundException: https://pbs.twimg.com/media/By_ui7QIgAE021Z.jpg

异常是由指令openStream()产生的。

如何防止这种情况发生?如何检查图片有效性?

最佳答案

我认为您的错误是您在 url 对象而不是 httpConnection 对象上调用 getInputStream()。通过您的 httpConnection 对象,您已经连接到服务器并读取响应代码。同一个对象有一个 openStream() 方法,我认为您应该使用它。

至少,看起来您的代码可能具有为每个图像生成 2 个连接而不是一个连接的副作用。

此外,在您有问题的 URL 上,这些是我看到的从服务器返回的 header :

HTTP/1.1 404 Not Found
Date: Mon, 06 Oct 2014 13:05:32 GMT
Server: tfe
cache-control: max-age=5, must-revalidate
content-security-policy-report-only: default-src 'none'; img-src https://abs.twimg.com https://ssl.google-analytics.com; script-src https://abs.twimg.com https://ssl.google-analytics.com about:; style-src https://abs.twimg.com 'unsafe-inline'; font-src https://abs.twimg.com https://twitter.com;connect-src 'none'; object-src 'none'; media-src 'none'; frame-src 'none'; report-uri https://twitter.com/i/csp_report?a=ORTGK%3D%3D%3D&ro=false
x-xss-protection: 1; mode=block
Content-Type: image/jpeg
Content-Length: 4311

因此,您应该检查响应中的非 HTTP 200 代码...您正在做的,但您可能想用 curl 或其他东西仔细检查它以验证您没有代理在中间做一些奇怪的事情。

关于java - 检查 HTTP 请求中的图像有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26216664/

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