2016-04-08 16 views
0

aracılığıyla bir diziye JSON geri dönüş yanıtı alınamadı. Bu nedenle, expedia'nın API'sinde çalışıyorum ve API isteklerinin çoğunu başarıyla çalıştırdım ancak denedim ve arandığım halde yalnızca bir tane çalışamıyorum sorun ne için boşuna.PHP İşlev

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; 

ben URL'yi yankı ve sonuç beklendiği gibi tarayıcıda deneyin json şeklinde ödeme türlerinin bir dizi .... ama için:

Benim Fonksiyon şöyle Bunun geri dönüşü için php dizisi içine alıyorum hayatım beni kızdırıyor. İşte

API spec bağlantısıdır: http://developer.ean.com/docs/payment-types/

Ve evet ben herhangi bir yardım bu yüzden çok mutluluk duyacağız

.... JSON sıklıkla S.Overflow yayınlanan kılavuzlarını dışarı kontrol ettikten ...

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 yaslanmak gibi görünecektir diyor

AMA benim Dizi dönüyor:

Array 
(
    [0] => 
) 

ÇÖZÜLDÜ:

Teşekkür, 505 aşağıdaki yorumlar aracılığıyla çalışan ve hata atılan araştırma için - Ben googled ve birisi onlar yüzünden sahipsiz bir hata vardı ki bulundu URL'de boşluk. Hatam, Müşteri kullanıcı aracısının php'nin kullanıcı HTTP aracısı tarafından doldurulmasıydı ... Bunu kaldırdım ve manuel olarak girdim ve şimdi yanıtı kırabilirim.

+0

Hata mı veriyor? – Tomahock

+0

Hiçbir hata atılmadı, ancak dizi dizi Array ( [0] => ) –

+0

$ sonuçta var_dump() çalıştırın ve ne gösterdiğine bakın. NULL ise, diziniz boş olacak ve API aramanızla ilgili bir sorun var – Pazuzu156

cevap

1

json_decode'un ikinci bağımsız değişkeni olarak true'u kullandığınızda, JSON nesneleri nesneler değil PHP ilişkilendirici dizilerine deşifre edilir. Yani $result->HotelPaymentResponse, $result['HotelPaymentResponse'] olmalıdır. Ya da ikinci bağımsız değişkeni json_decode()'a kullanmayın.

+0

Teşekkürler, bunu denedim ama yine de Array ([0] =>) atıyor –

+0

'json_decode() 'ifadesini çağırmadan önce API'dan gelen yanıt nasıl görünüyor? – Barmar

+0

Bunu kontrol etmek için sıcak olduğundan emin değilim? –