2012-02-19 62 views
5

Estoy tratando de obtener un InputStream desde una URL. La URL puede estar abierta desde Firefox. Devuelve un json y he instalado un complemento para ver json en Firefox, así puedo verlo allí.Código de respuesta HTTP devuelto por el servidor: 400

Así que trataron de obtener de Java por:

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

Pero es tirar una IOException en urlConnection.getInputStream().

También probé:

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

Pero no hubo suerte.

Cualquier información es apreciable. Gracias por adelantado.

Respuesta

22

Gracias a todos. Este es un problema extraño, pero al final lo resolví.

La URL que estoy solicitando es

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

Ahora navegador reemplaza los espacios entre "una pesadilla en la calle Elm" por "20%" internamente y lo analiza. Es por eso que el servidor solicitado puede responder por esa solicitud. Pero desde Java, no reemplacé esos espacios por "% 20", por lo que se convierte en Bad Request, source.

Ahora está funcionando.

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

Gracias !! Me salvó un largo tiempo – Ankur

+0

@Ankur eres bienvenido. –

+0

Hola, sigo recibiendo el mismo error – Bhavesh

3

¿está configurando la conexión correctamente? aquí hay un código que ilustra cómo hacer esto. Tenga en cuenta que estoy siendo flojo con el manejo de excepciones aquí, este no es un código de calidad de producción.

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

codificar los parámetros en la URL de la siguiente manera:

String messageText = URLEncoder.encode(messageText, "UTF-8"); 
Cuestiones relacionadas