首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java禁止的代码错误,但不是浏览器错误(2)

Java禁止的代码错误,但不是浏览器错误(2)
EN

Stack Overflow用户
提问于 2017-06-25 01:24:41
回答 2查看 249关注 0票数 0

下面的代码使用指定的url下载图像。但是对于一些urls,我得到了403错误。

根据这个link,我尝试使用setRequestProperty(),但是我的问题仍然没有得到解决。我不知道我犯了什么错误,或者还有什么需要添加到我的代码中?

代码语言:javascript
复制
import java.io.*;
import java.net.URL;
import java.net.MalformedURLException;
import java.net.URLConnection;
import java.net.HttpURLConnection;

class Crawler{

    public static void main(String args[]){

        String address = "http://szcdn1.raagalahari.com/dec2016/hd/anupama-parameswaran-premam-hd-photos/anupama-parameswaran-premam-hd-photos294.jpg";
        Connection connection1 = new Connection();
        connection1.connector(address);

    }   
}

class Connection{
    void connector(String s){
        try{    
            URL url = new URL(s);
            URLConnection uc = url.openConnection();
            HttpURLConnection http_connection = (HttpURLConnection) uc;
            http_connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36");

            http_connection.connect();
            ImageDownload downloader = new ImageDownload();
            downloader.download(url);   

        }catch(Exception e) {
            System.out.println(e);
        }       
    }
}

class ImageDownload{

    void download(URL u){
        try
        { 

            InputStream in = new BufferedInputStream(u.openStream());
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buf = new byte[1024];
            int n = 0;

            while (-1!=(n=in.read(buf))){
                out.write(buf, 0, n);
            }

            out.close();
            in.close();

            byte[] response = out.toByteArray();


            FileOutputStream fos = new FileOutputStream("C://3.jpg");
            fos.write(response);
            fos.close();
        } catch(IOException e){
             System.out.println(e);
        }
    }
}

如果问题重复,请提前向您道歉。请帮帮我..

EN

回答 2

Stack Overflow用户

发布于 2017-06-25 01:51:41

403错误几乎总是由你试图访问你没有访问权限的东西的问题引起的。

试着用这个

代码语言:javascript
复制
http_connection.setRequestProperty("http-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
票数 0
EN

Stack Overflow用户

发布于 2017-06-25 03:04:05

您的download()方法使用URL.openStream()从头开始打开它的连接,并使用Java的默认连接参数。您准备的http_connection无效,因为您的代码不会在执行此工作的download()方法中使用它。

因此,您应该将下载传递给http_connection ()方法,并使用它的getInputStream()方法代替URL.openStream(),而不是使用URL。然后,您将看到请求属性的效果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44739063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档