Я использую SOAP для получения данных с некоторого сервера (данные поступают в.xml). Но иногда сервер SOAP не работает, и мне нужно отобразить некоторое сообщение об ошибке, а не:
Warning: simplexml_load_string(): Entity: line 2: parser error : Start tag expected, '<' not found in /var/www/class/data2.php on line 619 Warning: simplexml_load_string(): in /var/www/class/data2.php on line 619 Warning: simplexml_load_string(): ^ in /var/www/class/data2.php
Мой код:
$client = new SOAPClient ( 'link.wsdl' ); // initiate new SoapClient
$password ['_'] = 'PASSWORD'; // password for authenticate_user function in SoapHeader
$encoded = new SoapVar ( $password, SOAP_ENC_OBJECT ); // make SoapVariable out of $password
$header = new SoapHeader ( 'http://soapinterop.org/echoheader/', 'authenticate_user', $encoded ); // put authenticate_user method, and password in header
$client->__setSoapHeaders ( $header ); // set SoapHeader
$response = $client->get_details ($this->vin); // calling get_details with the vin given in the form field
$xml = simplexml_load_string ( $response ); // converting the response string to xml
$json = json_encode ( $xml ); // converting to an array in to easy steps (step 1)
$array = json_decode ( $json, TRUE ); // step 2
Что я хочу: Замените предупреждающее сообщение на что-то вроде: "Эта услуга временно недоступна"
После
$xml = simplexml_load_string ( $response );
проверить, если
$xml === false
и соответственно установите соответствующее сообщение об ошибке
Как вы можете прочитать в руководстве функцию simplexml_load_string
:
Возвращает объект класса SimpleXMLElement со свойствами, содержащими данные, хранящиеся в документе xml, или FALSE при сбое.
Так что просто проверьте, не сработает ли он, и если он повторит эхо. Эта услуга временно недоступна
Чтобы избавиться от этого предупреждения, ini_set('display_errors', '0');
внимание на ini_set('display_errors', '0');
по производству