java.io.IOException:无效的Http响应

时间:2014-03-04 07:40:42

标签: java httpresponse httpurlconnection ioexception

现在在您说出这样的问题之前,我想指出我已经看过大部分没有运气了。我也是这里的第一个计时器,所以要温柔。

我现在在我目前的计划中遇到这种烦恼:

基本上我的程序的这一部分使用搜索引擎来查找torrent文件。

public static ArrayList<String> search(String args) throws IOException {        
    args = args.replace(":", "");

    ArrayList<String> list = new ArrayList<String>();
    URL url = new URL("http://pirateproxy.net/search/" + args + "/");
    URLConnection con = url.openConnection();
    BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); <---- THIS
}

public static void main(String[] args) {
    try {
        search("The Hobbit: The Desolation of Smaug");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

错误:

java.io.IOException: Invalid Http response
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at service.ServiceDownloader.search(ServiceDownloader.java:20)
at service.ServiceDownloader.main(ServiceDownloader.java:45)

现在有趣的是,这部电影只会出错(“霍比特人:史矛革的荒凉”),其他每部电影都能完美运作。我不明白这一点。请帮忙。 (我还从搜索方法中删除了所有不必要的代码)

如果我在这里没有提供足够的信息,请向我询问更多信息。

3 个答案:

答案 0 :(得分:4)

您应该对字符串The Hobbit: The Desolation of Smaug进行URL编码,因为那里有特殊字符。例如:空间。

答案 1 :(得分:1)

我怀疑它在冒号(:)而不是空间上绊倒了。还有其他带冒号的标题吗?

答案 2 :(得分:0)

您可以使用内置的UriBuilder来生成有效的URL,而不是串联字符串并不必要地创建临时字符串并因为未对url进行编码而失败,而是可以使用内置的enter image description here来生成有效的URL。

URL path = UriBuilder.fromPath("http://pirateproxy.net")
            .path("search")
            .path("some movie ")
            .build()
            .toURL();

// http://pirateproxy.net/search/some%20movie%20