如何创建PHP SOAP客户端并将结果xml存储在php变量中
我使用的是
PHP,之前从未使用过SOAP和
PHP.
我需要构建一个Soap PHP客户端,它从一个调用和检索信息 我目前正致力于为荷兰医疗保健系统的医生提供信息 所以当我调用SOAP服务器时: 进入这个测试网站(如soapclinet.com) 我的XML响应是正确的,看起来与下面的XML完全相同 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <ListHcpApprox3Result xmlns="http://services.cibg.nl/ExternalUser"> <ListHcpApprox> <ListHcpApprox3> <HcpNumber>200822</HcpNumber> <BirthSurname> [Surname of the Doctor]</BirthSurname> <MailingName> [Mailing name of the doctor] </MailingName> <Initial> [Initials of the doctor] </Initial> <Gender> [Gender of the doctor] </Gender> <ArticleRegistration> <ArticleRegistrationExtApp> <ArticleRegistrationNumber> [unique BIG ID] </ArticleRegistrationNumber> <StartDate>1998-12-10T00:00:00</StartDate> <EndDate xsi:nil="true"/> <TypeOfSpecialismId>15</TypeOfSpecialismId> </SpecialismExtApp> </Specialism> <Mention/> <JudgmentProvision/> <Limitation/> </ListHcpApprox3> </ListHcpApprox> </ListHcpApprox3Result> </soap:Body> </soap:Envelope> 我需要构建一个PHP网页,它将执行完全相同的SOAP调用. wsdl文件的地址是这样的: webservices.cibg.nl/Ribiz/OpenbaarV2.asmx?wsdl.asmx?wsdl soap服务器地址是这样的: 肥皂行动是这样的: 我发送的SOAP消息是这样的: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <listHcpApproxRequest xmlns="http://services.cibg.nl/ExternalUser"> <WebSite>Ribiz</WebSite> <RegistrationNumber> [BIG ID number of the doctor] </RegistrationNumber> </listHcpApproxRequest> </soap:Body> </soap:Envelope> (括号内是我们在SOAP服务器中发送的医生的BIG ID号) 如何将上述SOAP操作编写到PHP代码中并在PHP中存储我作为响应获取的XML变量? 我需要在php代码中存储的XML响应中的变量是这些…… <HcpNumber>200822</HcpNumber> <BirthSurname> [Surname of the Doctor]</BirthSurname> <MailingName> [Mailing name of the doctor] </MailingName> <Initial> [Initials of the doctor] </Initial> <Gender> [Gender of the doctor] </Gender> Update1:??这是var_dump的输出.其中xxxxxxx是我想要存储在php变量中的值! object(stdClass)[2] public 'ListHcpApprox' => object(stdClass)[3] public 'ListHcpApprox3' => object(stdClass)[4] public 'HcpNumber' => string 'xxxxxxxxx' (length=6) public 'BirthSurname' => string 'xxxxxxxxxxx' (length=9) public 'MailingName' => string 'xxxxxxxxxxxxxxxxxx' (length=18) public 'Initial' => string 'xxxxxxxxxxxx' (length=8) public 'Gender' => string 'x' (length=1) public 'ArticleRegistration' => object(stdClass)[5] ... public 'Specialism' => object(stdClass)[7] ... public 'Mention' => object(stdClass)[9] ... public 'JudgmentProvision' => object(stdClass)[10] ... public 'Limitation' => object(stdClass)[11] ... 解决方法
PHP具有本机
SoapClient类,可以轻松调用SOAP服务.它提供了一个简单的接口,允许您使用本机PHP数组和对象来处理请求和响应数据,并处理SOAP信封和WSDL的复杂性.
// create a new SoapClient and pass it the WSDL $client = new SoapClient('http://webservices.cibg.nl/Ribiz/OpenbaarV2.asmx?WSDL'); // define the input parameters for the webservice call $params = array('WebSite' => 'Ribiz','RegistrationNumber' => 'xxxxxxxxxx'); // invoke the ListHcpApprox3 method $response = $client->ListHcpApprox3($params); // print out the response to see its structure var_dump($response); 您可以从响应中选择变量,如下所示: $data = $response->ListHcpApprox->ListHcpApprox3 $HcpNumber = $data->HcpNumber; $BirthSurname = $data->BirthSurname; echo $HcpNumber; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |