我在我的代码中有基于超文本标记语言的查询,当从服务器接收到505响应时,一种特定的查询似乎会引起IOExceptions
。我和其他似乎有类似问题的人一起查看了505的回复。显然,505代表HTTP版本不匹配,但当我将相同的查询URL复制到任何浏览器(尝试过firefox、seamonkey和Opera)时,似乎没有问题。我读过的一个帖子建议,浏览器可能会自动处理版本不匹配问题。
我试图通过使用Opera附带的漂亮的开发人员工具更深入地挖掘,看起来版本之间没有不匹配的地方(我相信Java使用HTTP1.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
发布于 2010-11-15 23:34:11
Tomcat中包含空格的URL存在一些问题。要解决此问题,您需要使用URLEncoder
对url进行编码。
示例(注意空格):
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
发布于 2010-09-03 14:57:39
作为www.uniprot.org的开发人员,我的优势在于能够查看请求日志。根据日志,在过去的一年中,我们没有发送505响应码。在任何情况下,我们的服务器都能理解http 1请求以及默认的http1.1 (尽管您可能得不到预期的结果)。
这让我怀疑可能是某种数据损坏了。或者您受到硬件故障的影响(最近我们在交换机和整个数据中心方面遇到了一些问题;)。在任何情况下,如果您对uniprot.org有任何疑问或问题,请联系help@uniprot.org,这样我们就可以看看我们是否可以帮助/解决这个问题。
您的代码片段看起来很正常,应该可以工作。
向您致敬,Jerven Bolleman
发布于 2010-09-02 18:03:56
你在代理背后吗?这段代码适用于我,并打印出我通过浏览器看到的相同文本。
final URL url = new URL("http://www.uniprot.org/uniprot/?query=mnemonic%3aNUGM_HUMAN&format=tab&columns=id,entry%20name,reviewed,organism,length");
final URLConnection conn = url.openConnection();
final InputStream is = conn.getInputStream();
System.out.println(IOUtils.toString(is));
conn
是HttpURLConnection的一个实例
https://stackoverflow.com/questions/3625659
复制相似问题