[英]SimpleXMLElement - HTTP status code?
我正在使用PHP Steam Condenser庫,以獲取有關用戶的一些Steam詳細信息。 我已經成功實現了這一目標,並且一切正常。 但是我開始注意到Steam冷凝器經常會引發錯誤。
發生的事情是,當我使用參數調用SteamId
類時,該庫會使用SimpleXMLElement生成URL並對其進行請求( 如此處所示 )。 現在大多數時候,URL返回XML,因此我的應用程序可以正常工作,但是Steam經常每隔50秒就返回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)
盡管從技術上講這是正確的異常,但是由於請求只是“不可用”,因此無法收集XML,因此它不是很有意義。
我將如何編輯此代碼以首先檢查請求的狀態碼是什么(如果是302或200(因為它已重定向)),然后繼續檢查XML,否則,如果是503,則以更真實的方式響應錯誤(Steam社區API當前已關閉)-或其他原因。
Google已經幫了我大忙,但是什么也看不到。 理想情況下,我希望所有操作都在同一請求中完成,因為有時Steam可能會有點慢。
干杯
不要使用SimpleXMLElement
也執行HTTP請求。
使用curl
(因為它很快)來獲取XML純文本,並使用SimpleXML
進行解析。
這樣,您可以將服務可用性與傳輸錯誤(或XML錯誤)分開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.