Я использую функцию simplexml_load_file()
PHP для вызова API, который возвращает измененные результаты на основе отправленной мной отметки времени.Как проверить, что файл XML хорош, прежде чем запускать simplexml_load_file()
Таким образом, API вернет только результаты, которые изменились с момента моей отметки. Проблема, с которой я столкнулась, заключается в том, что временная метка слишком скоро, и нет никаких результатов для возврата API, тогда она не вернет правильный XML-файл, а просто вернет пустую страницу.
Это вызывает все виды проблем с simplexml_load_file
Вот простой тест, который я могу запустить ...
$xml = 'http://api.rescuegroups.org/rest/?key=CZivWWGD&type=orgs&limit=300&updatedAfter=1361941202&startPage=1';
$xmlObj = new SimpleXMLElement($xml, NULL, TRUE);
Это приводит к ...
Warning: SimpleXMLElement::__construct(): http://api.rescuegroups.org/rest/?key=CZivWWGD&type=orgs&limit=300&updatedAfter=1361941202&startPage=1:1: parser error : Document is empty in E:\Server\htdocs\labs\freelance\dogAPI\testorg.php on line 9
Warning: SimpleXMLElement::__construct(): in E:\Server\htdocs\labs\freelance\dogAPI\testorg.php on line 9
Warning: SimpleXMLElement::__construct():^in E:\Server\htdocs\labs\freelance\dogAPI\testorg.php on line 9
Warning: SimpleXMLElement::__construct(): http://api.rescuegroups.org/rest/?key=CZivWWGD&type=orgs&limit=300&updatedAfter=1361941202&startPage=1:1: parser error : Start tag expected, '<' not found in E:\Server\htdocs\labs\freelance\dogAPI\testorg.php on line 9
Warning: SimpleXMLElement::__construct(): in E:\Server\htdocs\labs\freelance\dogAPI\testorg.php on line 9
Warning: SimpleXMLElement::__construct():^in E:\Server\htdocs\labs\freelance\dogAPI\testorg.php on line 9
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in E:\Server\htdocs\labs\freelance\dogAPI\testorg.php:9 Stack trace: #0 E:\Server\htdocs\labs\freelance\dogAPI\testorg.php(9): SimpleXMLElement->__construct('http://api.resc...', 0, true) #1 {main} thrown in E:\Server\htdocs\labs\freelance\dogAPI\testorg.php on line 9
Теперь, если Я передаю API временную метку, которая далее возвращается туда, где есть результаты, после чего она вернет идеальный XML-документ.
Я ищу способ предотвратить предотвращение этой неприятной ошибки как-то?
Используйте 'file_get_contents()' для извлечения данных, а затем проверить его, и использовать 'simplexml_load_string()', чтобы загрузить его? –
Чтобы вылечить причину, а не симптомы, сделайте все одолжение и свяжитесь со службой rescuegroups.org и сообщите им, что их API не отправляет ответ XML, когда это необходимо, например. он должен возвращать ' ' –
Gordon