首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleXMLElement - HTTP状态代码?

SimpleXMLElement - HTTP状态代码?
EN

Stack Overflow用户
提问于 2014-02-14 15:52:18
回答 1查看 430关注 0票数 1

我正在与PHP蒸汽冷凝器库合作,以获取一些有关用户的蒸汽细节。我已经成功地实现了这一点,一切都很正常。然而,我开始注意到一个错误经常被抛出,从蒸汽冷凝器。

所发生的情况是,当我使用param调用SteamId类时,库将生成一个URL并使用SimpleXMLElement (从这里可以看到)向其发出请求。现在,大多数情况下,URL返回XML,因此我的应用程序运行良好,但是,蒸汽经常会将503 Service Unavailable抛回,导致它失败。

代码语言:javascript
复制
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版本是正确的,因此它抛出了底层自定义异常:

代码语言:javascript
复制
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,用一个更真实的错误(蒸汽Community当前关闭)来响应--或者其他什么。

我已经把我的屁股搜索掉了,但什么也看不见。理想情况下,我希望在相同的要求下完成这一切,因为蒸汽有时会有点慢。

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-14 15:53:56

不要使用SimpleXMLElement也执行HTTP请求。

使用curl (因为它速度快)获取XML纯文本,使用SimpleXML解析它。

这样,您就可以将服务可用性与传输错误(或XML错误)分开。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21783722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档