OkHttp 2.0 响应(POST 请求)正文字符串为空字符串
Posted
技术标签:
【中文标题】OkHttp 2.0 响应(POST 请求)正文字符串为空字符串【英文标题】:OkHttp 2.0 Response (of a POST request) body string is an empty string 【发布时间】:2014-11-30 12:58:09 【问题描述】:我正在切换到 OkHttp 2.0 提供的新请求/响应实现
GET 请求没有问题,我可以轻松读取响应正文字符串,但从 POST 请求读取响应正文字符串时出现问题。
实际上,我向我的服务器发出 POST 请求(请求正文是 JSON 媒体类型),该服务器以 201 http 状态代码和响应正文中的 JSON 进行响应。
POST 请求正常(服务器正在保存数据),但我无法从我的 android 应用程序中读取正文字符串。响应正文字符串为空字符串,而响应 http 状态码正确为 201。
我正在使用 response.body().string() 读取响应正文,就像在 GET 请求中一样。 我应该在客户端/服务器端做一些特别的事情来正确读取响应正文字符串吗?
【问题讨论】:
请分享上述代码,以便我们更容易看到您在做什么,这可能是执行顺序问题。 【参考方案1】:看来问题出在服务器端。
当我从服务器端指定响应 content_type 为“application/json”且 status=200(我使用的是 201)时,来自 OkHttp 的 response.body().string() 返回了真正的响应 JSON 而不是空的字符串。
【讨论】:
POSTMan 和 Charles Proxy 是你们的朋友。根据 HTTP 1.1 RFC,标头也应使用“-”分隔。如果您的服务器用下划线响应,我会解决这个问题。 (幸好OKHttp宽容)以上是关于OkHttp 2.0 响应(POST 请求)正文字符串为空字符串的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 的 OKhttp 中通过 POST 请求发送 JSON 正文
当使用 okhttp 发送 post 请求时,服务器接收到的请求正文为空。可能是啥问题?