2010-09-10 121 views
0

我有一段Java代码打开一个HTTP连接,在其上写入数据,然后检索响应代码。因为connectin很好,所以它应该得到HTTP_OK(即200),但它的回报是1。为什么HttpURLConnection.getResponseCode()返回1?

这是莫名其妙的,因为1在Http Response代码规范中没有任何地方出现。任何人都可以对潜在问题区域提出一些想法吗?

以下是一段代码:

URL tempURL = new URL("http://www.google.com"); 

obj_URLHttpConnectionServlet = (HttpURLConnection)tempURL.openConnection(); 
obj_URLHttpConnectionServlet.setDoInput(true); 
obj_URLHttpConnectionServlet.setDoOutput(true); 

OutputStream obj_OutputStream = obj_URLHttpConnectionServlet.getOutputStream(); 

obj_OutputStream.write(sConfigurationData.getBytes()); 
obj_OutputStream.flush(); 
obj_OutputStream.close(); 
obj_OutputStream = null; 

int iResponseCode = obj_URLHttpConnectionServlet.getResponseCode(); 
System.out.println("Response code received is : " + iResponseCode); 

输出接收

响应代码是:1

回答

0

由于服务器侧已设置它为1。如果这在你的控制之下,那么检查/修复对此负责的代码。如果这不在您的控制范围内,请报告/联系网站管理员。


更新:按照评价,Fiddler确认服务器方有响应标头的第一线设置为HTTP/200 1。这很奇怪。它应该看起来更像HTTP/1.1 200。空格之前的部分应指示协议/版本,空格之后的部分应指示响应代码。这看起来越来越成为服务器端的问题。我会联系网站管理员。

+0

这是可能的服务器来改变HTTP反应代码?在其他环境和同一台服务器上的相同代码运行良好并返回200 – Tushu 2010-09-10 13:34:17

+0

在servlet类中,可以通过'response.setStatus(1)'轻松实现。网络服务器也可以这样做,细节取决于制造/版本。可以肯定的是,使用像Fiddler这样的HTTP监视工具来排除这个或那个(如果它显示1,那么它是服务器,否则它是客户端)。 – BalusC 2010-09-10 13:53:05

+0

好的,但仍然有一个大问题,即同一台服务器如何为两个相同的代码(在不同的环境中运行)返回不同的响应代码? – Tushu 2010-09-10 13:56:47