2012-09-04 81 views
5

我正在为在Brightcove视频云上托管视频的网站创建视频站点地图。为了得到从网站上所有的视频信息,Brightcove公司提出来读取他们的网址如下形式HttpURLConnection通过代理访问时返回503错误

http://api.brightcove.com/services/library?token="+accountToken+"&page_size=1&command=find_all_videos&output=JSON&get_item_count=true 

URL的输出是JSON,其中accountToken只是账户的标识符的响应。

当我在浏览器中用Token点击上面的url时,它给了我正确的回应。

我写了下面的程序片段作为我的浏览器使用代理来从URL

URL jsonURL = new URL("http://api.brightcove.com/services/library?token="+accountToken+"&page_size=1&command=find_all_videos&output=JSON&get_item_count=true"); 
     HttpURLConnection connection = (HttpURLConnection) jsonURL.openConnection(); 
     connection.setRequestMethod("GET"); 
     connection.connect(); 
     BufferedReader reader = new BufferedReader(
       new InputStreamReader(connection.getInputStream())); 
     String lineRead = ""; 
     while (reader.ready()) { 
      lineRead = lineRead + reader.readLine(); 
     } 

读,我添加了下面的代码,包括代理设置

 System.setProperty("http.proxyHost", "my.proxyurl.com"); 
     System.setProperty("http.proxyPort", "80"); 

不使用代理服务器设置,返回java.net.ConnectException: Connection refused: connect并与代理它给了我java.io.IOException: Server returned HTTP response code: 503

所以我的问题是,为什么它给了我一个503(服务不可用)erro r?从浏览器工作正常。

更新1: 这似乎是一个网络问题。我ping了域,它说“请求超时”。尽管通过HTTP工作。看起来像是防火墙的问题。

+0

向下选民请评论。 –

+0

它是什么类型的代理? – jtahlborn

+0

@jtahlborn:反向代理。你在问什么背景? –

回答

3

我想,这可能是由于您的互联网连接,我试过你的代码,我没有得到任何503(Service Unavailable)。签出不同的连接连接(无代理),它应该工作。或者你也可以用稍微不同的方式尝试:

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("host", "port)); 
conn = new URL(jsonURL).openConnection(proxy); 

如果你有SOCKS代理类型,改变Proxy的构造函数参数Proxy.Type.SOCKS

+0

我已经尝试了代理的方法....虽然没有尝试使用类型Proxy.Type.SOCKS。 ...让我试试看,我会让你知道...... –

+0

不工作。我得到了'java.net。SocketException:来自SOCKS服务器的格式错误的回复。没有代理尝试它在一个不同的连接没有proxy.I必须让它在需要代理的客户端环境中工作.. :( –

+0

正如你所说,它看起来像一个网络问题,我已经添加了一个更新我的问题。回答当然应该得到这个赏金。谢谢。 –

0

轻微修正Jamas码

String host="myproxy.com"; 
int port=8080; 
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));