使用特定Web资源打开URLConnection

时间:2011-01-19 13:17:03

标签: java servlets

我无法使用特定的网络资源打开URLConnection。我正在

java.net.ConnectException: Connection timed out:”。是因为该域阻止了直接URL连接?如果是这样,他们如何阻止这个?下面是我写的代码片段。

代码段:

import java.io. ; import java.net。;

公共类TestFileRead {

public static void main(String args[]){

    try{

        String serviceUrl = "http://xyz.com/examples.zip";
        HttpURLConnection serviceConnection = (HttpURLConnection) new URL(serviceUrl).openConnection();
        System.out.println(serviceConnection);
        serviceConnection.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"); 

        DataInputStream din=new DataInputStream(serviceConnection.getInputStream());
        FileOutputStream fout=new FileOutputStream("downloaded");
        DataOutputStream dout=new DataOutputStream(fout);
        int bytes;
        while(din.available()>0){
            bytes=din.readByte();
            dout.write(bytes);
        }
    }catch(Exception ex){
        ex.printStackTrace();
    }

}

}

2 个答案:

答案 0 :(得分:1)

您可能正在浏览器中使用代理设置来访问Yahoo主页,该主页解释了它在浏览器中运行的原因,而不是代码中的原因。您需要Java应用程序的代理配置。

最简单的方法是在运行代码时设置系统属性http.proxyHosthttp.proxyPort(在Eclipse中或从命令行运行时只添加-Dhttp.proxyHost=your.host.com -Dhttp.proxyPort=80)并且你应该是好的去。从浏览器配置/设置中选择代理设置。

编辑:This link在处理Java代理时解释可能的解决方案做得不错。

答案 1 :(得分:0)

试试这个,它对我来说很好,返回索引页。

String serviceUrl = "http://yahoo.com";     
HttpURLConnection serviceConnection = (HttpURLConnection) new URL(serviceUrl).openConnection();
serviceConnection.addRequestProperty("User-Agent", "blah"); //some sites deny access to some pages when User-Agent is Java
BufferedReader in = new BufferedReader(new InputStreamReader(serviceConnection.getInputStream()));