2015-07-01 7 views
5

Ich poste eine Anfrage über eine API für Vor-Ort-Buchung. Wenn ich die Daten über eine Formularaktion posten und absende, erhalte ich die Antwort. Aber wenn ich versuche, dieselbe URL durch die Locke zu posten, um die Antwort zu bekommen, bekomme ich keine Daten.poste die Daten mit curl für Expedia Buchung vor Ort

Die URL ist: -

https://book.api.ean.com/ean-services/rs/hotel/v3/res? 
minorRev=99 
&cid=55505 
&sig=1893d9f7e3e9fbd3f8a36f43cd61287d 
&apiKey=1bn8n4or4tjajq23fe4l6m18lp 
&customerUserAgent=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 
&customerIpAddress=223.30.152.118 
&customerSessionId=e80df6de9008af772cfb48a389465415 
&locale=en_US 
&currencyCode=USD 
&xml=<HotelRoomReservationRequest> 
<hotelId>106347</hotelId> 
<arrivalDate>10/30/2015</arrivalDate> 
<departureDate>11/1/2015</departureDate> 
<supplierType>E</supplierType> 
<rateKey>469e1aff-49de-4944-a64d-25d96ccde3aa</rateKey> 
<rateCode>200706716</rateCode> 
<roomTypeCode>200127420</roomTypeCode> 
<chargeableRate>252.00</chargeableRate> 
<RoomGroup> 
    <Room> 
     <numberOfAdults>2</numberOfAdults> 
     <numberOfChildren>2</numberOfChildren> 
     <childAges>3,7</childAges> 
     <firstName>test</firstName> 
     <lastName>test</lastName> 
     <smokingPreference>NS</smokingPreference> 
     <bedTypeId>23</bedTypeId> 
    </Room> 
</RoomGroup> 
<ReservationInfo> 
    <email>[email protected]</email> 
    <firstName>test</firstName> 
    <lastName>test</lastName> 
    <homePhone>2145370159</homePhone> 
    <workPhone>2145370159</workPhone> 
    <creditCardType>CA</creditCardType> 
    <creditCardNumber>5401999999999999</creditCardNumber> 
    <creditCardExpirationMonth>04</creditCardExpirationMonth> 
    <creditCardExpirationYear>2017</creditCardExpirationYear> 
    <creditCardIdentifier>123</creditCardIdentifier> 
</ReservationInfo> 
<AddressInfo> 
    <address1>travelnow</address1> 
    <city>Seattle</city> 
    <stateProvinceCode>WA</stateProvinceCode> 
    <countryCode>US</countryCode> 
    <postalCode>98117</postalCode> 
</AddressInfo> 
</HotelRoomReservationRequest> 

ich diesen Code bin mit mir

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, true); 
       curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 
$header[] = "Accept: application/json"; 
     $header[] = "Accept-Encoding: gzip"; 
     $header[] = "Content-length: 0"; 


     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
     curl_setopt($ch, CURLOPT_ENCODING, "gzip"); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

     curl_setopt($ch, CURLOPT_VERBOSE, true); 
     $verbose = fopen('php://temp', 'rw+'); 
     curl_setopt($ch, CURLOPT_STDERR, $verbose); 

     $result = curl_exec($ch); 


echo '<pre>'; 
print_r($result); 

Bitte helfen, wie ich diese Daten durch curl veröffentlichen kann die response.I zu bekommen ist mit diesem in Wordpress für die Zahlung Buchung.

+0

Was print_r ($ result); ist outputing? –

+0

es wird keine Ausgabe geben, es hat ein leeres Array gezeigt –

+0

Ich sehe keine Vars/Werte gebucht werden. 'curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ fields_string);' ist ein Beispiel, in dem '$ fields_string' etwas wie" var1 = val1 & var2 = val2 "wäre –

Antwort

1

aus den Kommentaren zusammenfassend I posted:

  • Wenn Sie versuchen, Daten an die curl URL zu senden, müssen Sie CURLOPT_POSTFIELDS
  • Für Kopf Content-length der Wert 0 ein Problem sein kann, verwenden,
  • Um zu sehen, ob Sie tatsächlich mit der URL verbinden (für Beispiel müssen Sie einen Benutzernamen, Passwort für Authentifizierung übergeben) möchten Sie möglicherweise die zurückgegebenen Header mitEchoCURLOPT_HEADER
  • Ihre URL einen GET-Request mit Name/Wert-Paare zu sein scheint, aber Sie rufen curl als POST
  • Eine wirklich gute Referenz bei PHP.net ist http://php.net/manual/en/function.curl-setopt.php
+0

können Sie mir einen Beispielcode geben, der mir helfen wird, ich habe mit all diesen Dingen versucht –

+0

@DipanjanChakraborty Ich bin nicht vertraut mit dem Web-Service, den Sie verwenden (Expedia). Wünschen sie eine POST-Anfrage oder eine GET-Anfrage? Wenn sie eine POST-Anfrage haben möchten, was ist die Haupt-Endpunkt-URL? Ich kann einige Beispieleinstellungen im nächsten Kommentar geben. –

+0

Hier ist ein Beispiel ... '$ postVars = array ('user' => 'Alex', 'Besetzung' => 'Gitarrist', 'Band' => 'Rush');' Dann, um diese Variablen und Werte zu sammeln In deinen "POST" -Körper kannst du ... '$ postData = http_build_query ($ postVars);' Dann ... wirst du diese Information deiner setopt geben wollen und du kannst das mit 'curl_setopt ($ ch , CURLOPT_POSTFIELDS, $ postData); 'Versuchen Sie, auch die Option curl zu aktivieren, um die Ausgabe-Header in der Antwort zu erhalten. Es kann helfen, andere Probleme zu sehen. Das machen Sie mit 'curl_setopt ($ ch, CURLOPT_HEADER, true);' –