Я работаю с библиотекой PHP Steam Condenser, чтобы получить некоторые сведения о пользователе Steam. Я успешно реализовал это, и все работает. Однако я начал замечать, что ошибка возникает так часто, от Steam Condenser.SimpleXMLElement - код состояния HTTP?
Что происходит, когда я вызываю класс SteamId
с параметром, библиотека генерирует URL-адрес и делает запрос к нему, используя SimpleXMLElement (as can be seen here). В большинстве случаев URL-адрес возвращает XML, и поэтому мое приложение работает нормально, однако каждый раз Steam отбрасывает обратно 503 Service Unavailable
назад, в результате чего он терпит неудачу.
try {
return @new SimpleXMLElement($url, 0, true);
} catch (Exception $e) {
$errorMessage = "XML could not be parsed: " . $e->getMessage();
if ((float) phpversion() < 5.3) {
throw new SteamCondenserException($errorMessage, 0);
} else {
throw new SteamCondenserException($errorMessage, 0, $e);
}
}
В моей причине, PHP версия верна, поэтому он бросает нижний пользовательский Exception:
SteamCondenserException
XML could not be parsed: String could not be parsed as XML
/home/user/public_html/acme/vendor/koraktor/steam-condenser/lib/steam/community/XMLData.php (Line 38)
Хотя это технически правильное исключение, это не очень значимая, так как запрос был просто «Unavailable» и, следовательно, не смог собрать XML.
Как я могу изменить этот код, чтобы сначала проверить, что представляет собой код состояния запроса, если это 302 или 200 (поскольку он перенаправляет), а затем перейдите к проверке XML, иначе, если это 503, ответьте с более подлинной ошибкой (API сообщества Steam в настоящее время недоступен) - или что-то в этом роде.
Я отключил свою задницу, но ничего не вижу. В идеале мне бы хотелось, чтобы все было сделано по одному и тому же запросу, поскольку Steam иногда может быть немного медленнее.
Приветствия
Ах, хорошо, так что вы говорите, чтобы сделать запрос с завиванием, проверить правильность ответа, а затем просто использовать SimpleXMLElement для данных, которые вы возвращаете? – Alias
Да, точно. Если важно отделить эти типы ошибок, а 'SimpleXML' не дает вам хорошей справки, просто разделите его. – Halcyon
Спасибо, имеет смысл! – Alias