Как разобрать ответ php при рассмотрении ответа мыльной ошибки - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть запрос мыла, который отправляется, и он может сгенерировать действительный ответ или, если запрос имеет проблему, возвращает строку ошибки.

Ниже приведен действительный ответ

<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;
 }

Но когда в ответе есть ошибка, код не печатает строку ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...