Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 服务器返回HTTP响应代码:400_Java_Url_Ioexception_Http Status Code 400 - Fatal编程技术网

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

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获取InputStream。可以从Firefox打开URL。它返回一个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();
但是没有运气


任何信息都是可观的。提前谢谢

您是否正确设置了连接?这里有一些代码演示了如何执行此操作。请注意,我在这里懒得处理异常,这不是生产质量代码

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的一些权限来减小令牌的大小