java - 从 java.Server 中的 Url 下载图像返回 HTTP 响应代码 : 403 error. 如何使连接正常工作?

标签 java opencv url

我正在尝试从某个网址下载图片,但无法这样做,因为我必须以某种方式向网站提供正确的用户客户端。我确信问题是我在使用 Url 类时无法提供用户客户端,因为该页面可以通过浏览器访问。我尝试使用代理和 Urlconnection 但无法使其工作。请分享您对此事的看法!

我的代码如下:

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.SocketAddress;
import java.net.URL;
import java.net.URLConnection;

import javax.imageio.ImageIO;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;

public class KepLetolto {

    public static void main(String[] args) throws IOException {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        File file = new File("tempjpeg");
         SocketAddress address = new java.net.InetSocketAddress("xyz.com", 8080);

         // Create an HTTP Proxy using the above SocketAddress.
         Proxy proxy = new Proxy(Proxy.Type.HTTP, address);


        URL url_kep =new URL("http://www.theouthousers.com/images/templates/thumbnails/128058/bayfinger_size3.png");

        ImageIO.write(ImageIO.read(url_kep), "jpeg", file);

        Mat uj = Highgui.imread("temp.jpeg" ,Highgui.CV_LOAD_IMAGE_COLOR);  

    }

}

最佳答案

不要使用 ImageIO.read(URL),它会将您限制为 URL 底层 URLConnection 的默认行为,而应使用 ImageIO.read(InputStream) .

这允许您使用任何 HTTP 客户端库 - 包括基本的 HttpURLConnection ,您可以从 (HttpURLConnection)url_kep.openConnection() 获取。使用它,您可以设置诸如 User-Agent 之类的 header (如果这是网站所需的 header ),或者设置其他 header (例如 Referer),这些 header 有时用于防止深层攻击链接。

设置所有 header 和任何其他请求选项后,您可以从客户端对象获取 InputStream,并将其传递给 ImageIO

关于java - 从 java.Server 中的 Url 下载图像返回 HTTP 响应代码 : 403 error. 如何使连接正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30280539/

相关文章:

用于上传文件的 Java HTTP 客户端 (multipart/form-data)

java - 类转换异常 : Fragment1 cannot be cast to Fragment2

python - 在python中使用opencv在图像的高斯模糊期间出现错误。代码之前运行正常,并且突然出现错误

javascript - 从外部 URL 获取 URL 标题,无需加载整个网站

java - 如何检查 URL 是否存在或使用 Java 返回 404?

java - Android http 请求出现严重错误

java - java继承调用父类(super class)方法

python - 如何从图像转换中计算张量乘数?

c++ - 如何通过网络传递 cv::Mat?

javascript - 将长 HTML 文本导出到电子邮件(避免 "The requested URL/... is too large to process"414 错误)