2012-02-19 14 views
5

Sto cercando di ottenere un InputStream da un URL. L'URL può essere aperto da Firefox. Restituisce un json e ho installato un addon per la visualizzazione di JSON in Firefox, così posso vederlo lì.Il server ha restituito il codice di risposta HTTP: 400

così ho cercato di ottenere da Java:

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

Ma sta gettando un'IOException in urlConnection.getInputStream().

Ho anche provato:

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

ma senza fortuna.

Qualsiasi informazione è apprezzabile. Grazie in anticipo.

risposta

22

Grazie a tutti. Questo è un problema strano ma alla fine l'ho risolto.

L'URL sto chiedendo è

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

Ora il browser sostituisce gli spazi tra "A Nightmare on elm street" con "% 20" internamente ed analizza. Questo è il motivo per cui il server richiesto può rispondere in base a tale richiesta. Ma da Java non ho sostituito questi spazi con "% 20", quindi diventa Bad Request, source.

Ora funziona.

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

Grazie !! Mi ha salvato da molto tempo – Ankur

+0

@Ankur sei il benvenuto. –

+0

Ciao, sto ancora ricevendo lo stesso errore – Bhavesh

3

stai configurando la connessione correttamente? ecco un codice che illustra come farlo. Si noti che io sono pigro sulla gestione delle eccezioni qui, questo non è il codice di qualità della produzione.

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

codificare i parametri nella URL come segue:

String messageText = URLEncoder.encode(messageText, "UTF-8"); 
Problemi correlati