2016-11-18 3 views
1

Я использую PHP-cURL (в WP-Plugin), чтобы получить ответ JSON от моего приложения ZF2.ZF2 RESTful JsonModel

Мне нужно сделать 2 запроса.

  1. OAuth
  2. запрос GET

Первый работает отлично я просто получить json_encoded массив обратно. Но когда я отправить запрос GET ответ выглядит (всего местного):

plugin.php: 16: строка «HTTP/1.1 200 OK Date: Пт, 18 ноября 2016 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; expires = Fri, 18-Nov-2016 23:14:20 GMT; Max-Age = 36000; path =/Истекает: Чт, 19 ноября 1981 г. 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Transfer-Encoding: chunked Content-Type: application/json ; кодировка = UTF-8

{ "данные": { "машины": [{ "ID": 2590978, "Refnummer": 1000869, "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; 

ответ

1

Похоже, что это относится к завитку части в вашей реализации клиента. Пожалуйста, посмотрите на Can PHP cURL retrieve response headers AND body in a single request?.

Я думаю, это должно быть сделано с установкой линии с CURLOPT_HEADER на значение false. (https://curl.haxx.se/libcurl/c/CURLOPT_HEADER.html)

+1

Omg Большое вам спасибо, я новичок в этом cURL ... CURLOPT_HEADER, чтобы ошибочно было правильно. – Tiega