【问题标题】:OkHttp 2.0 Response (of a POST request) body string is an empty stringOkHttp 2.0 响应(POST 请求)正文字符串为空字符串
【发布时间】:2014-11-30 12:58:09
【问题描述】:

我正在切换到 OkHttp 2.0 提供的新请求/响应实现

GET 请求没有问题,我可以轻松读取响应正文字符串,但从 POST 请求读取响应正文字符串时出现问题。

实际上,我向我的服务器发出 POST 请求(请求正文是 JSON 媒体类型),该服务器以 201 http 状态代码和响应正文中的 JSON 进行响应。

POST 请求正常(服务器正在保存数据),但我无法从我的 android 应用程序中读取正文字符串。响应正文字符串为空字符串,而响应 http 状态码正确为 201。

我正在使用 response.body().string() 读取响应正文,就像在 GET 请求中一样。 我应该在客户端/服务器端做一些特别的事情来正确读取响应正文字符串吗?

【问题讨论】:

  • 请分享上述代码,以便我们更容易看到您在做什么,这可能是执行顺序问题。

标签: android okhttp


【解决方案1】:

看来问题出在服务器端。

当我从服务器端指定响应 content_type 为“application/json”且 status=200(我使用的是 201)时,来自 OkHttp 的 response.body().string() 返回了真正的响应 JSON 而不是空的字符串。

【讨论】:

  • POSTMan 和 Charles Proxy 是你们的朋友。根据 HTTP 1.1 RFC,标头也应使用“-”分隔。如果您的服务器用下划线响应,我会解决这个问题。 (幸好OKHttp宽容)
猜你喜欢
  • 2020-11-19
  • 1970-01-01
  • 2018-08-16
  • 2018-09-19
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
相关资源
最近更新 更多