我从SOAP WSDL调用得到响应:
$client = new SoapClient($settings['address']);
$params = new stdClass();
$params->Username = $settings['username'];
$params->Password = $settings['password'];
var_dump($client->Get_Brands($params));
以下是回复。如何在PHP中实际读取它?我需要使用DOMDocument遍历它还是将SOAP结果返回到对象或数组中?
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Table" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:decimal" minOccurs="0"/>
<xs:element name="Description" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<DocumentElement xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
<ID>1</ID>
<Description>Alfa Romeo</Description>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1">
<ID>2</ID>
<Description>Alpina</Description>
</Table>
</DocumentElement>
</diffgr:diffgram>
答案 0 :(得分:-1)
您应该将有效的WSDL定义作为SoapClient()的第一个参数传递。 您还可以将一些特定选项设置为第二个参数(例如soap_version)。 通常不需要解析SOAP响应 - 您应该获得某种类型的方法结果。 但是,如果无效的SoapClient中的SOAP响应无法自动识别和解析它,则可能需要使用DOMDocument或SimpleXML手动解析它。