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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我在我的代码中有基于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();
 }

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

提问于
用户回答回答于

Tomcat中存在一些URL,其中包含空格。要解决这个问题,你需要用你的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
用户回答回答于

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

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

你的代码片段看起来很正常,应该可以工作。

扫码关注云+社区