簡體   English   中英

PHP SOAP-> Xml請求

[英]PHP SOAP -> Xml Request

我有一個小問題。

我必須發送一個XML Request,我寫了代碼,但是沒有用。

我的密碼

$url = 'http://xml.qa.goglobal.travel/XMLWebService.asmx?WSDL';
$client = new SoapClient($url, array('soap_version' => SOAP_1_2));

$xml = '
POST /XMLWebService.asmx HTTP/1.1
Host: xml.qa.goglobal.travel
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 300              

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<Root>
    <Header>
        <Agency>1520475</Agency>
        <User>PGHPOLXML</User>
        <Password>MY_PASSWORD</Password>
        <Operation>HOTEL_SEARCH_REQUEST</Operation>
        <OperationType>Request</OperationType>
    </Header>
    <Main>
        <SortOrder>0</SortOrder>
        <FilterPriceMin>0</FilterPriceMin>
        <FilterPriceMax>10000</FilterPriceMax>
        <MaximumWaitTime>30</MaximumWaitTime>
        <MaxResponses>1000</MaxResponses>
        <FilterRoomBasises>
        <FilterRoomBasis></FilterRoomBasis>
        </FilterRoomBasises>
        <HotelName></HotelName>
        <CityCode>75</CityCode>
        <ArrivalDate>2014-05-06</ArrivalDate>
        <Nights>3</Nights>
        <Rooms>
            <Room Type="TWN" RoomCount="1" CotCount="0"></Room>
        </Rooms>
    </Main>
</Root>
</soap12:Body>
</soap12:Envelope>';

$a = $client->__call(
    'MakeRequest', 
    array(
        array(
            'requestType' => 'xml', 
            'xmlRequest' => $xml
        )
    )
);

WSDL的響應是

object(stdClass)#2 (1) { ["MakeRequestResult"]=> string(0) "" }

來自var_dump($client->__getFunctions());響應var_dump($client->__getFunctions());

array(4) { [0]=> string(86) "MakeRequestCompressedResponse MakeRequestCompressed(MakeRequestCompressed $parameters)" [1]=> string(56) "MakeRequestResponse MakeRequest(MakeRequest $parameters)" [2]=> string(86) "MakeRequestCompressedResponse MakeRequestCompressed(MakeRequestCompressed $parameters)" [3]=> string(56) "MakeRequestResponse MakeRequest(MakeRequest $parameters)" }

此服務的端點是http://xml.qa.goglobal.travel/XMLWebService.asmx

如何解決呢?

目前,我也正在使用Go Global Travel XML API,並設法通過PHP cURL庫調用它的Web服務功能。 這是一個代碼片段:

$URL = 'http://xml.qa.goglobal.travel/XMLWebService.asmx?op=MakeRequest';
$user = 'USERNAME';
$password = 'PASSWORD';
$request = '<?xml version="1.0" encoding="utf-8"?>
    <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
        <soap12:Body>
            <MakeRequest xmlns="http://www.goglobal.travel/">
                <requestType>11</requestType>
                <xmlRequest><![CDATA[
                <Root>
                    <Header>
                        <Agency>AgencyCode</Agency>
                        <User>' . $user . '</User>
                        <Password>' . $password . '</Password>
                        <Operation>HOTEL_SEARCH_REQUEST</Operation>
                        <OperationType>Request</OperationType>
                    </Header>
                    <Main Version="2.0" Currency="EUR">
                        <SortOrder>1</SortOrder>
                        <CityCode>2330</CityCode>
                        <ArrivalDate>2016-08-01</ArrivalDate>
                        <Nights>3</Nights>
                        <Rooms>
                            <Room Adults="2" RoomCount="1"></Room>
                        </Rooms>
                    </Main>
                </Root>
                ]]></xmlRequest>
            </MakeRequest>
        </soap12:Body>
    </soap12:Envelope>';
$headers = array("Content-type: application/soap+xml; charset=\"utf-8\"", "Content-length: " . strlen($request));

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_USERPWD, $user . ':' . $password);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM