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

pos*_*def 19 java http version ioexception http-status-code-505

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

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

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

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

小智 41

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
Run Code Online (Sandbox Code Playgroud)

  • 我用%20替换了我的网址中的空格.谢谢,这个固定的问题 (3认同)

Jer*_*ven 8

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

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

您的代码段似乎正常,应该可以使用.

此致,Jerven Bolleman