使用 soapUI 我从 wsdl url 得到响应,我得到的 soap 响应都很好,现在我需要使用网站上的数据,所以我可以将用户输入的数据与我得到的响应进行比较,我设法得到使用 php-curl
在我的网页上的响应 <?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"
xmlns:web=\"http://www.dataaccess.com/webservicesserver/\">\n
<soapenv:Header/>\n
<soapenv:Body>\n
<web:NumberToWords>\n
<ubiNum>100</ubiNum>\n
</web:NumberToWords>\n
</soapenv:Body>\n
</soapenv:Envelope>",
CURLOPT_HTTPHEADER => array("content-type: text/xml"),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
//if i do
$xml = simplexml_load_string($response);
var_dump($xml);
/// my error I get error object(SimpleXMLElement)#1 (0) { }
/* if i try
$xml = simplexml_load_string($response);
$xml->registerXPathNamespace('ns', "http://schemas.xmlsoap.org/soap/envelope/");
$displayIds = $xml->xpath('ns:soap-env:Envelope/ns:n0/ns:E_DATOS');
foreach ($displayIds as $displayId) {
echo $displayId;
}
/result
Warning: SimpleXMLElement::xpath(): Invalid expression in line x
*/
?>
我现在已经花了好几天时间,阅读所有内容对我来说似乎是我的 soap 的结构方式或 ns 我也不知道如何使用 xpath 的问题。
soapui中的输出为
<soap-env:envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:header>
<soap-env:body>
<n0:zfi_mf_ws_consulta_clienteresponse xmlns:n0="urn:sap-com:document:sap:rfc:functions">
<e_datos>
<kunnrdf>123</kunnr>
<name1>name</name1>
<land1>VE</land1>
<stras>street</stras>
<ort01>SAN FRANCISCO</ort01>
<telf1>0261-215012</telf1>
<stcd1>J-0701721725-7</stcd1>
<stcd1_sg>J07017252252177</stcd1_sg>
<smtp_addr>[email protected]</smtp_addr>
<tatyp_1>Flete</tatyp_1>
<taxkd_1>0</taxkd_1>
<tatyp_2> Producto</tatyp_2>
<taxkd_2>1</taxkd_2>
</e_datos>
<e_respuesta>
<tipo>
<clase>
<nro>000</nro>
<mensaje></mensaje>
</clase>
</tipo>
</e_respuesta>
</n0:zfi_mf_ws_consulta_clienteresponse></soap-env:body>
</soap-env:header>
</soap-env:envelope>