2016-04-08 10 views
0

私はexpediaのAPIで作業しています。多くのAPIリクエストを正常に処理しましたが、試してみましたが何が問題になるのか無駄です。PHPで配列にJSONのレスポンスを返すことができない関数

global $cid, $apiKey, $sig, $minor_rev; 


$url= 'http://api.ean.com/ean-services/rs/hotel/v3/paymentInfo?minorRev='.$minor_rev.''; 
$url .= '&cid='.$cid.''; 
$url .= '&sig='.$sig.''; 
$url .= '&apiKey='.$apiKey.''; 
$url .= '&customerUserAgent='.$PaymentTypeData['customerUserAgent'].''; 
$url .= '&customerIpAddress='.$PaymentTypeData['customerIpAddress'].''; 
$url .= '&customerSessionId='.$PaymentTypeData['customerSessionId'].''; 
$url .= '&locale=en_US&_type=json'; 
$url .= '&currencyCode='.$PaymentTypeData['currencyCode'].''; 
$url .= '&hotelId='.$PaymentTypeData['hotelId'].''; 
$url .= '&supplierType=E'; 
$url .= '&rateType=MerchantStandard'; 



$header[] = "Accept: application/json"; 
$header[] = "Accept-Encoding: gzip, deflate"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch,CURLOPT_ENCODING , "gzip"); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET'); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$result = json_decode(curl_exec($ch), true); 


$HotelPaymentResponse = array(); 
$HotelPaymentResponse[] = $result['HotelPaymentResponse']; 


echo '<pre>'; 
echo $url; 
print_r($result); 
echo '<h1>GET HOTEL PAYMENT TYPES</h1>'; 
print_r($HotelPaymentResponse); 
echo '</pre>'; 

return $HotelPaymentResponse; 

私はURLをエコーし​​、結果が期待されているなどのブラウザでそれを試して、JSON形式の支払型の配列....しかし、のために:

私の機能は、このようになります返すためにPHP配列にこれを取得私の人生は私を逃す。任意のヘルプは非常に非常に高く評価されるだろうhttp://developer.ean.com/docs/payment-types/

そして、はい、私はJSONをチェックアウトしたことが多いS.Overflowに掲載導く....

...:ここでは

は、APIの仕様へのリンクです

PS:

{ 
"HotelPaymentResponse": { 
    "@size": "4", 
    "@currencyCode": "USD", 
    "customerSessionId": "0ABAAAC9-9A32-7914-9E32-D7EC7F906769", 
    "PaymentType": [ 
     { 
      "code": "AX", 
      "name": "American Express" 
     }, 
     { 
      "code": "DS", 
      "name": "Discover" 
     }, 
     { 
      "code": "CA", 
      "name": "Master Card" 
     }, 
     { 
      "code": "VI", 
      "name": "Visa" 
     } 
    ] 
} 
} 

APIは安息は次のようになりますと言います

しかし、私の配列を返す:

Array 
(
    [0] => 
) 

が解決:

おかげで、505以下のコメントを通じて作業し、エラーがスローされた研究に - 私はGoogleで検索して、誰かが、彼らがために、浮遊のエラーを持っていたと言いましたURLのスペース。私のエラーは、顧客のユーザーエージェントがPHPのユーザーHTTPエージェントから入力されたためです...削除して手動で入力したので、応答をカールすることができます。

+0

エラーが発生しますか? – Tomahock

+0

エラーはスローされませんが、配列は印刷中です。 ( [0] => ) –

+0

$結果にvar_dump()を実行し、その内容を確認してください。 NULLの場合、配列は空になり、API呼び出しに問題があります – Pazuzu156

答えて

1

json_decodeの第2引数にtrueを使用すると、JSONオブジェクトはオブジェクトではなくPHPの連想配列にデコードされます。したがって、$result->HotelPaymentResponse$result['HotelPaymentResponse']である必要があります。

json_decode()に2番目の引数を使用しないでください。

+0

ありがとう、私はそれを試みましたが、まだ配列([0] =>)を投げて –

+0

'json_decode()'を呼び出す前に、APIからの応答はどのように見えますか? – Barmar

+0

私はそれを確認するために暑いですか? –

関連する問題