我正在尝试 json_decode我从对我的服务器端 API 的 GET 请求收到的响应,但我得到一个空字符串。我的假设是否正确,因为响应包含 JSON 解码器无法处理的所有 header 信息?这是我从服务器获得的完整响应:
HTTP/1.1 200 OK
Server: nginx/1.0.5
Date: Sun, 18 Mar 2012 19:44:43 GMT
Content-Type: application/json
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: Servlet/3.0; JBossAS-6
Content-Length: 97
{"pid":"162000798ab8481eaeb2b867e10f8849","uuid":"973b8722c75a4cacb9fd2316517587bb"}
在将响应发送给客户端之前,我是否需要删除 servlet 中的 header ?
最佳答案
是的,json_decode
必须传递只是要解码的 JSON 数据。由于您使用的是 curl,因此您可以简单地将请求配置为不将 header 返回给您,例如
curl_setopt($ch, CURLOPT_HEADER, false);
更新:如果您需要用于早期处理的 header ,那么上面的内容不会削减它。但是,您可以随时轻松删除它们,方法是利用在响应的 header 和主体之间将有一个双换行符“定界符”这一事实。像这样使用 explode
将隔离主体:
list(,$body) = explode("\n\n", $response, 2);
关于php - 当 header 存在时从 GET 响应中解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9761767/