Java 服务器返回HTTP响应代码:400
我正在尝试从URL获取InputStream。可以从Firefox打开URL。它返回一个json,我安装了一个插件,用于在Firefox中查看json,因此我可以在那里查看它 因此,我尝试通过以下方式从Java获取它:Java 服务器返回HTTP响应代码:400,java,url,ioexception,http-status-code-400,Java,Url,Ioexception,Http Status Code 400,我正在尝试从URL获取InputStream。可以从Firefox打开URL。它返回一个json,我安装了一个插件,用于在Firefox中查看json,因此我可以在那里查看它 因此,我尝试通过以下方式从Java获取它: URL url = new URL(urlString); URLConnection urlConnection = url.openConnection(); BufferedReader reader = new BufferedReader(new InputStream
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();
但是没有运气
任何信息都是可观的。提前谢谢 您是否正确设置了连接?这里有一些代码演示了如何执行此操作。请注意,我在这里懒得处理异常,这不是生产质量代码
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是
http://api.themoviedb.org/2.1/Movie.search/en/json/api_key/a nightmare on elm street
现在,浏览器在内部将“elm street上的噩梦”之间的空格替换为“%20”并进行解析。这就是为什么被请求的服务器可以通过该请求进行响应。但在Java中,我没有用“%20”替换空格,所以它变成了错误的请求
现在它正在工作
BufferedReader reader = new BufferedReader(new InputStreamReader(((HttpURLConnection) (new URL(urlString)).openConnection()).getInputStream(), Charset.forName("UTF-8")));
将URL中的参数编码如下:
String messageText = URLEncoder.encode(messageText, "UTF-8");
我有一个类似的问题,我的url是:
http://www.itmat.upenn.edu/assets/user-content/documents/ITMAT17. October 10 2017_.pdf
其中显然包含空格
这些异常导致java.io.IOException服务器在以下代码中返回HTTP响应代码:400:
java.net.URL url = new URL(urlString);
java.io.InputStream in = url.openStream();
如果复制上述url并粘贴到浏览器中,您将意识到浏览器为空间添加了“%20”。所以我用下面的代码手动完成了,问题就解决了
if(urlString.contains(" "))
urlString = urlString.replace(" ", "%20");
完整的代码/答案应为:
if(urlString.contains(" "))
urlString = urlString.replace(" ", "%20");
java.net.URL url = new URL(urlString);
java.io.InputStream in = url.openStream();
我遇到了同样的错误。在我的例子中,这是因为头中的sizjwt令牌大于mule软代理可以接受的大小。一个选项是增加mule soft中可接受的头大小,或者通过删除分配给用户id的一些权限来减小令牌的大小