【问题标题】:Empty Http Call but no error空 Http 调用但没有错误
【发布时间】:2012-07-26 03:16:59
【问题描述】:

我正在尝试使用我的应用程序调用 Web 服务,但我没有收到任何错误,该 URL 是正确的并返回一些内容(通过浏览器),但我没有收到任何内容。

try {
    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(url);
    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();
    int lenght = (int) entity.getContentLength();
    is = entity.getContent();
} catch (Exception e) {
    Log.e("log_tag", "Error in http connection" + e.toString());
}

长度等于-1,因为他收到的响应是空的

来自 url 的响应需要是 HTML 吗?或者我输出的任何东西都可以被 HttpClient 抓取?

【问题讨论】:

  • 你用的是哪个版本的android是ICS或以上的?
  • 如果它仍然不适合您,请阅读下面的答案。

标签: java android


【解决方案1】:

响应不需要是HTML,但是如果服务器端在响应中没有返回content-length header,那么length就是负数。

【讨论】:

    【解决方案2】:

    响应不一定必须是 HTML。

    getContentLength() 返回负值表示服务器不返回内容长度。这并不意味着没有内容。请求可能返回内容,但 getContentLength() 仍然返回负值。

    你仍然可以得到请求返回的内容:

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    entity.writeTo(baos);
    String contentString = baos.toString();
    

    【讨论】:

    • 我添加了你的 3 行,它在“entity.writeTo(baos);”失败。错误是“java.lang.IllegalStateException: Content has been used”。这是什么意思?跨度>
    猜你喜欢
    • 2021-04-06
    • 2019-05-11
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    相关资源
    最近更新 更多