服务器返回HTTP响应代码:400

我试图从URL获取InputStream。 该URL可以从Firefox打开。 它返回一个json,我已经在Firefox中安装了一个用于查看json的插件,所以我可以在那里查看它。

所以我试图通过以下方式从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(); 

但没有运气。

任何信息都很明显。 提前致谢。

谢谢大家。 这是一个奇怪的问题,但最后我解决了它。

我要求的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"))); 

你正确设置连接? 这里有一些代码说明了如何做到这一点。 请注意,我对这里的exception处理很懒,这不是生产质量代码。

 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()); } } 

编码URL中的参数,如下所示:

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