Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parse JSON from GET response when headers are present

I am trying to json_decode the response I receive from a GET request to my server-side API but I am getting an empty string back. Would I be right in assuming that because the response contains all the header info that the JSON decoder cant cope? This is the full response I'm getting from my server:

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"}

Do I need to remove the headers in my servlet before I send the response to the client?

like image 209
travega Avatar asked Feb 22 '23 02:02

travega


1 Answers

Yes, json_decode must be passed just the JSON data to decode. Since you are using curl, you can simply configure the request to not return the headers to you with something like

curl_setopt($ch, CURLOPT_HEADER, false);

Update: if you need the headers for earlier processing then the above won't cut it. However, you can remove them easily at any point by taking advantage of the fact that there will be a double-newline "delimiter" between the header and body of the response. Using explode like this will then isolate the body:

list(,$body) = explode("\n\n", $response, 2);
like image 180
Jon Avatar answered Mar 03 '23 16:03

Jon