我正在使用以下代码从网络服务器请求 xml:
HttpClient httpclient = new DefaultHttpClient()
try
{
HttpGet httpget = new HttpGet("http://63.255.173.242/get_public_tbl.cgi?A=1");
ResponseHandler responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget, responseHandler);
System.out.println(responseBody);
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
httpclient.getConnectionManager().shutdown();
}
我在调用 httpclient.execute(httpget, responseHandler) 时收到 clientProtocolException。 url 在网络浏览器中工作得很好,它返回 xml 并在浏览器中显示它。
知道为什么我会收到 clientProtocolException 但浏览器处理得很好吗?
编辑 1:
查看协议(protocol)异常,详细消息是:“服务器无法使用有效的 HTTP 响应进行响应”。我无法更改正在访问的 Web 服务器。有没有办法忽略它并只访问响应?
编辑 2:
我发现服务器没有发回完整的 header 。有没有办法在返回损坏的 header 时访问响应的内容?
编辑 3:我将 ip 地址编辑为我正在访问的真实 IP 地址。任何帮助将不胜感激。
最佳答案
由于您的代码似乎是正确的,您必须弄清楚:这是客户端的错误(无效请求),还是服务器的错误(无效响应)。为此,请使用 http trace utitlity并将浏览器的请求与您的客户端的请求进行比较。如果有的话,您还可以看到来自服务器的原始响应。如果您当时无法弄明白,请将原始请求和响应添加到您的问题中,也许有人可以提供帮助。
关于java - httpClient.execute(httpget, responseHandler) 中的 ClientProtocolException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12684739/