У меня есть запрос мыла, который отправляется, и он может сгенерировать действительный ответ или, если запрос имеет проблему, возвращает строку ошибки.
Ниже приведен действительный ответ
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:importTransactionResponse
xmlns:ns2="http://xxxxx/">
<return>
<userId>434079</userId>
</return>
</ns2:importTransactionResponse>
</soapenv:Body>
Ниже приведен ответ, содержащий строку ошибки.
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server</faultcode>
<faultstring>Errors occured when validating the userId of the
reuest.
userId errors.invalid</faultstring>
<detail>
<ns2:WebServiceValidationException
xmlns:ns2="http://xx">
<message>Errors occured when validating the userId of the
reuest.
userId errors.invalid</message>
<validationErrors>userId errors.invalid</validationErrors>
</ns2:WebServiceValidationException>
</detail>
</soapenv:Fault>
</soapenv:Body>
Ниже приведен код, который я использую для анализа этого ответа.
try {
$response = curl_exec($cURL);
if (curl_errno($curl)) {
echo 'Curl Error: ' . curl_error($curl) . "\n\n\n\n";
}
$doc = new DOMDocument();
$doc->loadXML($response);
$userId= $doc->getElementsByTagName('userId')->item(0)->nodeValue;
echo userId;
}
catch (SoapFault $fault){
echo $fault->faultstring;
}
Но когда в ответе есть ошибка, код не печатает строку ошибок.