【问题标题】:PHP XML-RPC server return code/error do not show in Perl XML-RPC clientPHP XML-RPC 服务器返回代码/错误不在 Perl XML-RPC 客户端中显示
【发布时间】:2015-09-10 11:53:02
【问题描述】:

我在使用 XML-RPC 时遇到了一个奇怪的问题。

我需要从 Perl 脚本使用现有的商业 XML-RPC API,用 PHP 编写(非常糟糕,我必须添加,文档很糟糕)。我已经尝试过所有我能找到的 Perl XML-RPC 模块(Frontier::ClientXML::RPCRPC::XML),但通常会发生这种情况:

  • 当我调用成功时,我得到结果,没有错。

  • 如果不是(无论出于何种原因 - 身份验证失败、缺少/错误的参数),我什么也得不到。空响应(使用 Frontier::Client 时,显示 500 Internal Server Error),没有任何错误代码/消息。

  • 但是当我使用商业 API 的供应商发送给我的 PHP 测试文件时,使用相同的方法和参数,我得到一个响应代码和一个响应消息(很少有用,但仍然如此)。

对此有何解释?他们在服务器端使用的库以某种奇怪的方式输出错误? (注意:我认为他们使用 xmlrpc-2.2.2,至少这是测试 PHP 文件中客户端使用的内容)。这是我从 PHP 客户端收到的带有错误的示例 XML 响应。

<?xml version="1.0" ?>
<methodResponse>
    <params>
        <param>
        <value>
            <struct>
                <member>
                    <name>demande</name>
                    <value>
                        <struct>
                            <member>
                                <name>0</name>
                                <value>
                                    <struct>
                                        <member>
                                            <name>codeReponse</name>
                                            <value>
                                                <int>-28</int>
                                            </value>
                                        </member>
                                        <member>
                                            <name>messageReponse</name>
                                            <value>
                                                <string>Verifiez l&apos;adresse email de validation</string>
                                            </value>
                                        </member>
                                    </struct>
                                </value>
                            </member>
                        </struct>
                    </value>
                </member>
            </struct>
        </value>
        </param>
    </params>
</methodResponse>

它是法语的,但你会明白要点。为什么它在 PHP 中正确显示,但在我的 Perl 脚本中却没有,无论我使用什么库?有什么办法可以解决这个问题,而不告诉 API 的供应商正确地重写他们的代码?

【问题讨论】:

  • 我认为我们需要查看一些代码才能有机会回答。
  • 你能从 API 中获取原始 XML 吗?
  • 正如我试图指出的那样,代码有点无关紧要。我无法访问 API 的代码,而我的只是简单的调用方法(来自三个不同的模块)。至于测试 PHP 脚本,它还包含最简单的客户端声明、参数绑定和调用。两个脚本的输出 XML 几乎相同(PHP 生成的 XML 中多了几个换行符,但我真的不认为这很重要)
  • 此外,我尝试使用 CURL 发布 PHP 脚本(有效)输出的数据,但仍然没有运气 - 空响应。

标签: php xml perl xml-rpc


【解决方案1】:

好吧,事实证明 XML-RPC 服务器非常挑剔,需要一组标头和 cookie 才能工作(其中大部分都没用),否则它什么也不输出。

【讨论】:

    猜你喜欢
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2016-09-15
    • 2012-04-29
    • 2017-06-29
    • 2010-10-17
    相关资源
    最近更新 更多