httpClient.execute中的ClientProtocolException(httpget,responseHandler)

Kev*_*ood 7 java android http http-get

我使用以下代码从Web服务器请求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在Web浏览器中工作正常,它返回xml,浏览器显示它.

任何想法为什么我会得到一个clientProtocolException但浏览器处理它就好了?

编辑1:

查看协议异常,详细消息是:"服务器无法响应有效的HTTP响应".我无法更改我正在访问的Web服务器.有没有办法忽略这个并只是访问响应?

编辑2:

我发现服务器没有发回完整的标头.有没有办法访问响应的内容,即使返回一个损坏的标题?

编辑3:我编辑的IP地址是我正在打的真实IP地址.任何帮助将非常感激.

Eug*_*sky 7

由于您的代码似乎是正确的,您必须弄清楚:这是客户端的错(无效请求)还是服务器的错误(无效响应).为此,请使用http trace utitlity并将浏览器的请求与客户端的请求进行比较.如果有的话,您还可以看到来自服务器的原始响应.如果您无法弄明白,请将原始请求和响应添加到您的问题中,然后某人可能会提供帮助.

  • 我发现服务器根本没有发送标头.最好的解决方案是直接与套接字通信. (2认同)