2012-02-19 29 views
5

URLからInputStreamを取得しようとしています。 URLはFirefoxから開くことができます。それはjsonを返し、Firefoxでjsonを表示するためのアドオンをインストールしたので、そこに表示することができます。サーバーからHTTP応答コードが返されました:400

だからにより、Javaからそれを取得しようとしました。)(

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は今、ブラウザが内部的にパース「%20」で「エルム通りの悪夢」の間にスペースを置き換える

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

です。そのため、要求されたサーバーはその要求によって応答することができます。しかしJavaから、私はそのスペースを "%20"で置き換えなかったので、Bad Request、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"); 
関連する問題