2012-02-19 3 views
5

URL에서 InputStream을 가져 오려고합니다. URL은 Firefox에서 열 수 있습니다. json을 반환하고 Firefox에서 json을 볼 수 있도록 addon을 설치했습니다. 그래서 거기에서 볼 수 있습니다. 서버에서 HTTP 응답 코드를 반환했습니다 : 400

는 그래서 의해 자바에서 그걸 얻기 위해 노력 :

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

그러나 urlConnection.getInputStream에서 IOException를() 던지고있다.

는 또한 시도 :

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

그러나 행운.

모든 정보가 상당합니다. 미리 감사드립니다.

답변

22

감사합니다. 이상한 문제이지만 마침내 해결했습니다.

내가 요청하고 URL은

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

지금 브라우저가 "% 20"내부적으로 파싱하여 "느릅 나무 거리에 악몽"사이의 공간을 대체합니다. 이것이 요청 된 서버가 요청에 응답 할 수있는 이유입니다. 하지만 Java에서 "% 20"으로 해당 공간을 바꾸지 않았으므로 잘못된 요청으로 변합니다. source.

이제 작동 중입니다.

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

감사합니다! 나에게 오랜 시간을 절약했습니다. – Ankur

+0

@Ankur 당신을 환영합니다. –

+0

안녕하세요, 여전히 동일한 오류가 발생합니다 – Bhavesh

3

연결을 올바르게 설정 하시겠습니까? 이 작업을 수행하는 방법을 보여주는 코드가 있습니다. 여기서 예외 처리에 대해 게으르다는 것을 유의하십시오. 이것은 프로덕션 품질 코드가 아닙니다.

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

인코딩은 URL의 매개 변수를 다음과 같이

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