我用
print "<br />\n Response: ".htmlspecialchars($client->__getLastResponse());
然后我从肥皂回应得到这个回应:
Response: <?xml version="1.0" encoding="utf-8"?><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><GetAllCompaniesResponse xmlns="http://tempuri.org/"><GetAllCompaniesResult><xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="PROD.CLIENTS" msprop:BaseTable.0="CLIENTS" msprop:BaseSchema="PROD"><xs:complexType><xs:sequence><xs:element name="COMPANYNAME" msprop:BaseColumn="COMPANY1" msprop:OraDbType="126" type="xs:string" minOccurs="0" /><xs:element name="CODE" msprop:BaseColumn="CODE" msprop:OraDbType="112" type="xs:int" 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"><NewDataSet xmlns=""><PROD.CLIENTS diffgr:id="PROD.CLIENTS1" msdata:rowOrder="0"><COMPANYNAME> WSQ IMPLEMENT OEE FOR PRODUCTIVITY IMPROVEMENT (14042014) CIP</COMPANYNAME><CODE>5671</CODE></PROD.CLIENTS><PROD.CLIENTS diffgr:id="PROD.CLIENTS2" msdata:rowOrder="1"><COMPANYNAME>10DOLLARSCOMPANY</COMPANYNAME>
等(这是一个长响应消息)
我想在标签之间得到每个名字,但我无法弄清楚这个输出的结构,我也看到标签名称有一些特殊字符,如“:”或“。”这让我感到困惑。你能给我一些帮助吗?非常感谢!
答案 0 :(得分:0)
问题是您通过该方法调用获得了整个SOAP一致性响应。但是你只想要对你感兴趣的部分。这是SOAP函数调用的返回值:
根据SoapClient::__getLastResponse()
的手册:
$client = SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo "Response:\n" . $client->__getLastResponse() . "\n";
您可能希望使用$result
解析$xml = simplexml_load_string($result)
。它包含您想要的数据。虽然$client->__getLastResponse()
包含整个SOAP响应,而不仅仅是SomeFunction
SOAP-API调用的返回数据。
但是为了得到更具体的答案,我们必须看到你的PHP SOAP代码。
答案 1 :(得分:0)
我找到了答案,环顾四周,再次测试和测试...... 方法如下:
$result = $client->__getLastResponse();
$doc = DOMDocument::loadXml($result);
$count =$doc->getElementsByTagName('COMPANYNAME')->length;
希望它能帮助那些与我有同样问题的人。谢谢大家!