簡體   English   中英

SimpleXMLElement-HTTP狀態代碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM