2017-09-18 6 views
0

私はSoap Webサービスとやりとりしています。私はsoapオブジェクトから値を読み込みたいと思っています。私はいつも例外を取得しています。下記参照;Soap Requestから値を読み取る方法

サンプルソープ;

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <c2b:C2BPaymentValidationRequest xmlns:c2b="http://cps.huawei.com/cpsinterface/c2bpayment"> 
     <TransID>3IN40005PY</TransID> 
     <TransTime>20160923143639</TransTime> 
     <TransAmount>3000</TransAmount> 
     <BusinessShortCode>10069</BusinessShortCode> 
     <MSISDN>86812530102</MSISDN> 
     <KYCInfo> 
      <KYCName>FirstName</KYCName> 
      <KYCValue>aaa</KYCValue> 
     </KYCInfo> 
     <KYCInfo> 
      <KYCName>MiddleName</KYCName> 
      <KYCValue>bbb</KYCValue> 
     </KYCInfo> 
     <KYCInfo> 
      <KYCName>LastName</KYCName> 
      <KYCValue>ccc</KYCValue> 
     </KYCInfo> 
     </c2b:C2BPaymentValidationRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

私は以下のように値を読み取ることができるように、オブジェクトを

$xml=simplexml_load_string($response) or die("Error: Cannot create object");

を製造しようとしました。

$TransID=$xml->TransID;$TransTime=$xml->TransTime; $TransAmount=$xml->TransAmount;

しかし、それはここダイを失敗した( "エラー:オブジェクトを作成できません");

さらに、私はsoap要求をjsonに変更して値を取得できますか?誰でも?

答えて

1

あなたのコードにSOAPのnamespace declaration (php manual)がないようです。


$xml = simplexml_load_string($xml_data); 
$xml->registerXPathNamespace('c2b', 'http://cps.huawei.com/cpsinterface/c2bpayment'); 
$response = $xml->xpath('//c2b:C2BPaymentValidationRequest') or die("Error: Cannot create object"); 

print_r($response); 

出力:


Array 
(
    [0] => SimpleXMLElement Object 
     (
      [TransID] => 3IN40005PY 
      [TransTime] => 20160923143639 
      [TransAmount] => 3000 
      [BusinessShortCode] => 10069 
      [MSISDN] => 86812530102 
      [KYCInfo] => Array 
       (
        [0] => SimpleXMLElement Object 
         (
          [KYCName] => FirstName 
          [KYCValue] => aaa 
         ) 

        [1] => SimpleXMLElement Object 
         (
          [KYCName] => MiddleName 
          [KYCValue] => bbb 
         ) 

        [2] => SimpleXMLElement Object 
         (
          [KYCName] => LastName 
          [KYCValue] => ccc 
         ) 

       ) 

     ) 

)