当标题存在时,从GET响应中解析JSON

tra*_*ega 4 php json curl http-get servlet-3.0

我正在尝试将我从GET请求收到的响应json_decode到我的服务器端API,但我得到一个空字符串.我是否正确地假设因为响应包含JSON解码器无法处理的所有标头信息?这是我从服务器获得的完整响应:

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"}
Run Code Online (Sandbox Code Playgroud)

在将响应发送到客户端之前,是否需要删除servlet中的标头?

Jon*_*Jon 8

是的,json_decode必须通过公正的JSON数据进行解码.由于您使用的是curl,因此您可以简单地将请求配置为不向您返回标题

curl_setopt($ch, CURLOPT_HEADER, false);
Run Code Online (Sandbox Code Playgroud)

更新:如果您需要用于早期处理的标题,则上述内容不会删除它.但是,您可以通过利用响应的标题和正文之间存在双换行"分隔符"这一事实,随时轻松删除它们.这样使用explode将隔离身体:

list(,$body) = explode("\n\n", $response, 2);
Run Code Online (Sandbox Code Playgroud)