0

サードパーティの Web サービスを使用してリクエストを投稿し、php curl を使用して SOAP 経由で応答を取得しています。応答は問題ありませんが、何らかの理由で応答を解析できません。simplexml_load_string を使用すると空白になります。

私のコードは

// PHP cURL  for https connection with auth

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $soapUser.":".$soapPassword); // username and password - declared at the top of the doc
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string); // the SOAP request
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// converting
$response = curl_exec($ch);              
print_r($response); // when I print response it shows me the correct response with data.
but when I am doing ,

$parser = simplexml_load_string($response2);         
print_r($parser); // it's giving SimpleXMLElement Object ( ) 

ヘッダーは

$headers = array(
                        "Content-type: text/xml;charset=\"utf-8\"",
                        "Accept: application/xml",
                        "Cache-Control: no-cache",
                        "Pragma: no-cache",

                        "Content-length: ".strlen($xml_post_string),
                    );  

石鹸ヘッダーは

<?xml version="1.0" encoding="utf-8"?>
                            <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.mrted.com/">

   <soapenv:Header>

      <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

         <wsse:UsernameToken wsu:Id="UsernameToken-1">

            <wsse:Username>*********************:guest:FO</wsse:Username>

            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">guest</wsse:Password>

            <wsu:Created>2012-07-09T11:35:20.019Z</wsu:Created>

         </wsse:UsernameToken>

      </wsse:Security>

   </soapenv:Header>

私が得ている応答は、ブラウザでcurl応答を印刷した後です-

 <env:envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:header></env:header>
    <env:body>
    <ns2:getcriteriaresponse xmlns:ns2="http://ws.mrted.com/">
    <ns2:standardcriteriawithlovs>
    <adlanguages><language><label>English (UK)</label><value>UK</value></language></adlanguages>
 <countries><country><label>Australia</label><value>1116</value><regions><region><label>Australian Capital Territory</label><value>3027</value></region><region><label>New South Wales</label><value>3028</value></region><region><label>Northern Territory</label><value>3029</value></region><region><label>Queensland</label><value>3030</value></region><region><label>South Australia</label><value>3031</value></region><region><label>Tasmania</label><value>3032</value></region><region><label>Victoria</label><value>3033</value></region><region><label>Western Australia</label><value>3034</value></region></regions></country><country><label>United Kingdom</label><value>1290</value><regions><region><label>East Anglia</label><value>3429</value></region><region><label>East Midlands</label><value>3430</value></region><region><label>England</label><value>4329</value></region><region><label>London</label><value>3431</value></region><region><label>Midlands</label><value>3432</value></region><region><label>North East</label><value>3433</value></region><region><label>North West</label><value>3434</value></region><region><label>Northern Ireland</label><value>3435</value></region><region><label>Scotland</label><value>3436</value></region><region><label>South</label><value>4332</value></region><region><label>South East</label><value>3437</value></region><region><label>South West</label><value>3438</value></region><region><label>Wales</label><value>3439</value></region><region><label>West Midlands</label><value>3440</value></region></regions></country></countries>
    </ns2:standardcriteriawithlovs>
    </ns2:getcriteriaresponse>
    </env:body>
    </env:envelope>

確かに、データを取得していますが、形式が間違っているか、何か不足している可能性があります。

提案してください。よろしくお願いします。

4

1 に答える 1