2012-02-19 75 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是

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

現在瀏覽器的「%20」內部,並解析替換「上猛鬼街」之間的空間。這就是爲什麼所請求的服務器可以響應該請求。但是從Java我沒有用「%20」替換空格,所以它變成了Bad Request,source

現在它工作。

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

謝謝!很久很久很久 – Ankur 2015-07-15 10:59:04

+0

@Ankur不用客氣。 – 2015-07-15 12:14:04

+0

嗨,我仍然收到相同的錯誤 – Bhavesh 2016-05-14 11:14:52

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"); 
相關問題