无法通过PHP函数

时间:2016-04-08 16:35:41

标签: javascript php arrays json

所以我正在使用expedia的API,并且已成功处理了许多API请求,但我无法让一个人工作,尽管我已经尝试并搜索了什么可能是问题。

我的功能如下:

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数组的回报让我失望

以下是API规范的链接:http://developer.ean.com/docs/payment-types/

是的,我已经查看了经常发布在S.Overflow上的JSON指南......

任何帮助都会非常感激......

PS:

API表示休息将如下:

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

但我的数组正在返回:

Array
(
    [0] => 
)

解决:

感谢通过以下评论并研究抛出的错误,505 - 我用Google搜索并发现有人说他们因为网址中的杂散空间而出错。我的错误是因为我的客户用户代理是从php的用户HTTP代理填充...删除并手动输入,现在我可以卷曲响应。

1 个答案:

答案 0 :(得分:1)

当您使用true作为json_decode的第二个参数时,JSON对象将被解码为PHP关联数组,而不是对象。因此$result->HotelPaymentResponse应为$result['HotelPaymentResponse']

或者不要将第二个参数用于json_decode()