我使用PHP-cURL(在WP-Plugin中)从我的ZF2应用程序获取JSON响应。
我必须做2个请求。
第一个工作正常我只是得到了json_encoded数组。 但是当我发送GET请求时,响应看起来像(一切都是本地的):
plugin.php:16:string' HTTP / 1.1 200 OK日期:星期五,2016年11月18日13:14:20 GMT服务器:Apache / 2.4.23(Win32)OpenSSL / 1.0.2h PHP / 7.0.9 X-Powered-By:PHP / 7.0.9 Set-Cookie: PHPSESSID = gb99a214u3rlc125ca4rscd441;到期= 2016年11月18日星期五 23:14:20 GMT;最大年龄= 36000; path = / Expires:Thu,1981年11月19日08:52:00 GMT Cache-Control:无存储,无缓存,必须重新验证Pragma: no-cache Transfer-Encoding:chunked Content-Type:application / json; 字符集= UTF-8
{"数据" {"机械和#34;:[{" ID":2590978," Refnummer":1000869,&#34 ; Maschinentyp":" 504"' ...(长度= 41759)
为什么我会获得完整的响应标头? 如果我现在尝试json_decode它我必须事先摆脱所有标题的东西,我可以避免吗?
这就是我生成响应的方式
$server = call_user_func($this->oauthServerFactory, $this->params('oauth'));
if (!$server->verifyResourceRequest(OAuth2Request::createFromGlobals())) {
// Not authorized return 401 error
$this->getResponse()->setStatusCode(401);
return $this->getResponse();
}
//GET DATA
$jsonArray = array();
$jsonArray['Machines'] = array();
$jsonMachinesArray = array();
foreach ($machines as $machine)
{
//ORDER DATA
}
return new JsonModel(array(
'data' => $jsonArray
));
在这里我创建了请求:
$endpoint = $url;
//var_dump($access_token);
$headers = array(
'Content-Type: application/json',
'Authorization: Bearer '.$access_token,
);
$curl = curl_init($endpoint);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
echo "Performing Request...<br>";
$json_response = curl_exec($curl);
//var_dump($json_response);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// evaluate for success response
if ($status != 200) {
throw new Exception("Error: call to URL $endpoint failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl) . "\n");
}
curl_close($curl);
return $json_response;
答案 0 :(得分:1)
这似乎与客户端实现中的curl部分有关。请查看Can PHP cURL retrieve response headers AND body in a single request?。
我认为应该将CURLOPT_HEADER的行设置为false。 (https://curl.haxx.se/libcurl/c/CURLOPT_HEADER.html)