2016-11-18 3 views
1

私はZF2アプリケーションからJSON応答を得るためにPHP-cURL(WP-Plugin)を使用します。ZF2 RESTful JsonModel

私は2つの要求をしなければなりません。

  1. のOAuth
  2. GETリクエスト

最初のものは、私はちょうどバックjson_encoded配列を取得正常に動作します。 しかし、私は、GETリクエストを送信するときに応答が(ローカルのすべて)のようになります。

plugin.php:16:文字列「HTTP/1.1 200 OK日:金、2016年11月18日午後01時14分20秒GMT サーバー:Apache/2.4.23(Win32)OpenSSL/1.0.2h PHP/7.0.9 X-Powered-By:PHP/7.0.9セットクッキー: PHPSESSID = gb99a214u3rlc125ca4rscd441;期限切れ=金曜日、2011年8月18日 23:14:20 GMT;最大年齢= 36000; path =/Expires:Thu、1981年11月19日08:52:00 GMT Cache-Control:no-store、no-cache、must-revalidateプラグマ: no-cache転送エンコーディング:chunkedコンテンツタイプ:application/json ; charset = 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

おかげさまで、ありがとうございました。私はそのcURLに新しいです... CURLOPT_HEADERをfalseにすることは正しいことでした。 – Tiega