2012-02-19 13 views
5

Próbuję uzyskać InputStream z adresu URL. Adres URL może być otwarty z przeglądarki Firefox. Zwraca json i zainstalowałem dodatek do przeglądania json w Firefoksie, dzięki czemu mogę go tam zobaczyć.Serwer zwrócił kod odpowiedzi HTTP: 400

Więc starałem się go z Java przez:

URL url = new URL(urlString); 
URLConnection urlConnection = url.openConnection(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 

Ale to rzuca IOException w urlConnection.getInputStream().

Próbowałem również:

HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
InputStream inputStream = url.openStream(); 

Ale bez powodzenia.

Każda informacja jest dostrzegalna. Z góry dziękuję.

Odpowiedz

22

Dziękuję wszystkim. To jest dziwny problem, ale w końcu go rozwiązałem.

URL Ja wzywający

http://api.themoviedb.org/2.1/Movie.search/en/json/api_key/a nightmare on elm street 

Teraz przeglądarka zastępuje przestrzenie między „koszmar z ulicy wiązów” przez „20%” wewnętrznie i analizuje. Dlatego żądany serwer może odpowiedzieć na to żądanie. Ale z Java nie zastąpiłem tych spacji przez "% 20", więc zmienia się w Bad Request, source.

Teraz działa.

BufferedReader reader = new BufferedReader(new InputStreamReader(((HttpURLConnection) (new URL(urlString)).openConnection()).getInputStream(), Charset.forName("UTF-8"))); 
+0

Dzięki !! Zaoszczędził mi długo – Ankur

+0

@Ankur nie ma za co. –

+0

Witam, nadal otrzymuję ten sam błąd – Bhavesh

3

czy prawidłowo konfigurujesz połączenie? oto kod, który ilustruje, jak to zrobić. Zauważ, że jestem tu leniwy w kwestii obsługi wyjątków, to nie jest kod jakości produkcji.

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 


public class URLFetcher { 

    public static void main(String[] args) throws Exception { 
     URL myURL = new URL("http://www.paulsanwald.com/"); 
     HttpURLConnection connection = (HttpURLConnection) myURL.openConnection(); 
     connection.setRequestMethod("GET"); 
     connection.setDoOutput(true); 
     connection.connect(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
     StringBuilder results = new StringBuilder(); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      results.append(line); 
     } 

     connection.disconnect(); 
     System.out.println(results.toString()); 
    } 
} 
0

zakodować parametry w adresie URL w następujący sposób:

String messageText = URLEncoder.encode(messageText, "UTF-8"); 
Powiązane problemy