java.io.IOException:服务器返回 HTTP 响应代码 505

我的代码中有基于HTML的查询,并且在收到来自服务器的505响应时,似乎会产生一种特定类型。我查找了505响应以及其他似乎有类似问题的人。显然,505代表HTTP版本不匹配,但是当我将相同的查询URL复制到任何浏览器(尝试过firefox,seamonkey和Opera)时,似乎没有问题。我读到的一篇文章建议浏览器可能会自动处理版本不匹配问题。IOExceptions

我试图通过使用Opera附带的不错的开发人员工具进行更深入的挖掘,看起来版本没有不匹配(我相信Java使用HTTP 1.1),并且收到了很好的响应。为什么当同一查询通过我的 Java 代码时,我会遇到问题?200 OK

     private InputStream openURL(String urlName) throws IOException{    
    URL url = new URL(urlName);
    URLConnection urlConnection = url.openConnection();
    return urlConnection.getInputStream();
 }

示例链接:http://www.uniprot.org/uniprot/?query=mnemonic%3aNUGM_HUMAN&format=tab&columns=id,entry%20name,reviewed,organism,length


答案 1

Tomcat 中存在一些问题,其中的 URL 包含空格。要解决此问题,您需要使用 .URLEncoder

示例(注意空格):

String url="http://example.org/test test2/index.html";
String encodedURL=java.net.URLEncoder.encode(url,"UTF-8");
System.out.println(encodedURL); //outputs http%3A%2F%2Fexample.org%2Ftest+test2%2Findex.html

答案 2

作为 www.uniprot.org 开发人员,我的优势在于能够查看请求日志。根据日志,去年我们没有发送505响应代码。在任何情况下,我们的服务器都能理解http 1请求以及默认的http1.1(尽管您可能无法获得预期的结果)。

这让我怀疑途中存在某种数据损坏。或者您受到硬件故障的影响(最近我们在交换机和整个数据中心;)遇到了一些麻烦。在任何情况下,如果您对 uniprot.org 有疑问或问题,请联系 help@uniprot.org,然后我们可以看看我们是否可以帮助/解决问题。

您的代码片段似乎正常,应该可以正常工作。

问候, 杰文·博勒曼


推荐