我正在尝试使用curl请求获取响应。肥皂服务运行良好的肥皂客户端。但是使用Curl我没有得到适当的回应。
这是我的代码示例:
SEARCH_KEY
我将wsdl XML代码作为响应。我谷歌它,但我没有找到任何解决方案。我得到了如下所述的响应。
阵 ( [@attributes] =>排列 ( [name] => PullServiceHIS [targetNamespace] => http://chetu.volateam.com/chetu/push/soapserver/PullService.php )
$bookingRQ = '<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<Interface xmlns="http://api.hotels-vacation.com/Documentation/XML/OTA/4/2011B/" ChannelIdentifierId="HIS_VACATION_XML4H" Version="2011B" Interface="VACATION QUICK CONNECT XML 4 OTA">
<ComponentInfo User="XMLHISJP" Pwd="5Kh86RSr" ComponentType="Hotel" />
</Interface>
</soap-env:Header>
<soap-env:Body RequestId="201505101528000000001" Transaction="OTA_HotelResRQ">
<OTA_HotelResRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2012-05-03T15:47:24-04:00" EchoToken="2012-05-03T15:47:24-04:00" Target="Production" Version="1.000" PrimaryLangID="en">
<HotelReservations>
<HotelReservation RoomStayReservation="true" CreateDateTime="2012-05-03T15:47:24-04:00">
<UniqueID Type="14" ID="HZ10014035" />
<RoomStays>
<RoomStay>
<RoomTypes>
<RoomType RoomTypeCode="RR" />
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="RPLN">
<MealsIncluded MealPlanCodes="BRE" />
</RatePlan>
</RatePlans>
<RoomRates>
<RoomRate NumberOfUnits="1" EffectiveDate="2012-05-13" ExpireDate="2012-05-16" RoomTypeCode="RR" RatePlanCode="RPLN">
<Rates>
<Rate EffectiveDate="2012-05-13" ExpireDate="2012-05-14" RateTimeUnit="Day">
<Base AmountBeforeTax="10000" AmountAfterTax="10980" DecimalPlaces="2" CurrencyCode="USD" />
<Total AmountBeforeTax="10000" AmountAfterTax="10980" DecimalPlaces="2" CurrencyCode="USD" />
</Rate>
<Rate EffectiveDate="2012-05-14" ExpireDate="2012-05-16" RateTimeUnit="Day">
<Base AmountBeforeTax="12000" AmountAfterTax="13050" DecimalPlaces="2" CurrencyCode="USD" />
<Total AmountBeforeTax="24000" AmountAfterTax="26100" DecimalPlaces="2" CurrencyCode="USD" />
</Rate>
</Rates>
</RoomRate>
</RoomRates>
<GuestCounts>
<GuestCount AgeQualifyingCode="10" Count="1" />
<GuestCount AgeQualifyingCode="8" Count="1" />
</GuestCounts>
<TimeSpan Start="2012-05-13" End="2012-05-16" />
<DepositPayments>
<RequiredPayment>
<AcceptedPayments>
<AcceptedPayment RPH="1">
<PaymentCard CardType="1" CardCode="VISA" CardNumber="4321432143214327" ExpireDate="1007" />
</AcceptedPayment>
</AcceptedPayments>
<AmountPercent Amount="130.80" />
<Deadline AbsoluteDeadline="2012-12-15" />
</RequiredPayment>
</DepositPayments>
<BasicPropertyInfo HotelCode="105487" />
<ResGuestRPHs>
<ResGuestRPH RPH="1" />
<ResGuestRPH RPH="2" />
</ResGuestRPHs>
<SpecialRequests>
<SpecialRequest Language="en" RequestCode="114">
<Text Language="en">Honeymoon</Text>
</SpecialRequest>
<SpecialRequest Language="en" RequestCode="21">
<Text Language="en">Non-Smoking</Text>
</SpecialRequest>
</SpecialRequests>
</RoomStay>
</RoomStays>
<ResGuests>
<ResGuest ResGuestRPH="1" AgeQualifyingCode="10" Age="21">
<Profiles>
<ProfileInfo>
<Profile ProfileType="1">
<Customer>
<PersonName>
<GivenName>John</GivenName>
<Surname>Dow</Surname>
</PersonName>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
<ResGuest ResGuestRPH="2" AgeQualifyingCode="8" age="10">
<Profiles>
<ProfileInfo>
<Profile ProfileType="1">
<Customer>
<PersonName>
<GivenName>Neil</GivenName>
<Surname>Dow</Surname>
</PersonName>
</Customer>
</Profile>
</ProfileInfo>
</Profiles>
</ResGuest>
</ResGuests>
</HotelReservation>
</HotelReservations>
</OTA_HotelResRQ>
</soap-env:Body>
</soap-env:Envelope>';
$headers = array(
"Cache-Control: no-cache",
"Content-type: text/xml; charset=\"utf-8\"",
"Accept: text/xml",
"SOAPAction: \"OTA_HotelResRQ\"",
"Pragma: no-cache",
"Content-length: ".strlen($bookingRQ)
);
$url = 'http://chetu.volateam.com/chetu/push/soapserver/PullService.php?wsdl';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $bookingRQ);
$result = curl_exec($ch);
$xmlstring = str_replace('soap-env:', '', $result);
$xml = simplexml_load_string($xmlstring);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
)
答案 0 :(得分:0)
我建议你使用Native PHP SoapClient类。最简单的方法是使用WSDL到php生成器,它将帮助您模拟化要作为请求发送的结构。
您还必须知道OTA调用起来很复杂,并且需要非常好地理解rquest结构。