Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从Soap请求中读取值_Php_Xml_Soap - Fatal编程技术网

Php 如何从Soap请求中读取值

Php 如何从Soap请求中读取值,php,xml,soap,Php,Xml,Soap,我正在与soapweb服务交互,我希望从Soap对象读取值。我总是遇到一个例外。见下文 样品皂 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <c2b:C2BPaymentValidationRequest xmlns:c2

我正在与soapweb服务交互,我希望从Soap对象读取值。我总是遇到一个例外。见下文

样品皂

<?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>

3IN40005PY
20160923143639
3000
10069
86812530102
名字
aaa
中间名
bbb
姓氏
ccc
我试着做一个物体

$xml=simplexml\u load\u string($response)或die(“错误:无法创建对象”)

以便我可以读取以下值

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

但是它在这里失败了die(“错误:无法创建对象”)

或者更好的是,如何将soap请求更改为json并获取值?有人吗?

您的代码中似乎缺少SOAP


$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
                        )

                )

        )

)