java.io.IOException:服务器返回HTTP响应代码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();
}
样本链接:
http://www.uniprot.org/uniprot/?query=mnemonic%3aNUGM_HUMAN&format=tab&columns=id,entry%20name,reviewed,organism,length
问题答案:
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