java - httpClient.execute(httpget, responseHandler) 中的 ClientProtocolException

标签 java android http http-get

我正在使用以下代码从网络服务器请求 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/

相关文章:

java - 如何对某个区域内的非GUI对象实现MouseListener?

android - 无法使用数据绑定(bind)在包含的布局中传递颜色变量

android - 键盘打开时导航栏变透明

"already logged in"的 HTTP 状态

java - PKCS#11 驱动程序提示输入每个 key 的 PIN

java - JPQL : unknown state or association field (EclipseLink)

android - 如何从Android App内的logcat捕获错误?

http - 如何使用 Curl 和 API key 上传到 Google Cloud Storage?

HTTP - 我应该使用 Last-Modified 作为 Etag 吗?

java - 从字符串中的金额中提取数字