2012-09-04 2757 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));