2012-09-04 16 views
5

Pracuję nad utworzeniem mapy witryny wideo dla witryny, która hostowała wideo w chmurze wideo Brightcove. Aby uzyskać wszystkie wideo informacje z serwisu, Brightcove sugeruje, aby przeczytać odpowiedzi z ich URL poniższego formularzaHttpURLConnection zwraca błąd 503 po uzyskaniu dostępu za pośrednictwem proxy

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

wyjście URL jest w JSON, gdzie accountToken jest tylko identyfikator konta.

Po kliknięciu powyższego adresu URL z Tokenem w przeglądarce daje mi to właściwą odpowiedź.

napisałem poniżej programu fragmencie czytać z tego adresu 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(); 
     } 

Jak moja przeglądarka korzysta z serwera proxy, dodałem poniżej kodu obejmują ustawienia proxy

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

Bez użycia ustawień proxy, zwraca java.net.ConnectException: Connection refused: connect i z pośrednikiem to daje mi java.io.IOException: Server returned HTTP response code: 503

Więc moje pytanie brzmi, dlaczego daje mi 503 (Service Unavailable) erro r? Z przeglądarki działa dobrze.

Aktualizacja 1: Wygląda na problem z siecią. Wysłałem polecenie ping do domeny i napisałem "Zlecić przekroczenie limitu czasu". Pracuje jednak przez HTTP. Wygląda na problem z zaporą.

+0

Downa wyborców prosimy o komentarz. –

+0

jakiego typu proxy to jest? – jtahlborn

+0

@jtahlborn: Reverse proxy. W jakim kontekście o to pytasz? –

Odpowiedz

3

Myślę, że może z powodu połączenia z Internetem, próbowałem Twojego kodu Nie dostałem żadnego 503(Service Unavailable). Sprawdź z innym połączeniem (bez proxy) i powinno działać. Można też spróbować z nieco innego podejścia:

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

Jeśli masz typu SOCKS proxy, zmień Proxy „s parametr konstruktora do Proxy.Type.SOCKS.

+0

Już wypróbowałem to podejście dla proxy .... nie próbowałem z typem Proxy.Type.SOCKS chociaż. ... pozwól mi spróbować, a dam ci znać ..... –

+0

Nie działa. Mam 'java.net.SocketException: źle sformułowana odpowiedź z serwera SOCKS. Nie ma sensu próbować go w innym połączeniu bez proxy. Muszę sprawić, by działał w środowisku klienta, które wymaga proxy .. :( –

+0

Jak powiedziałeś, wygląda na problem sieciowy. Dodałem aktualizację do mojego pytania. odpowiedź na pewno zasługuje na tę nagrodę. –

0

Minor korekta kodu Jamas

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