Perl XML-RPC 输出格式/模式


Perl XML-RPC output format/schema

我正在用Perl编写一个脚本来使用两个XML-RPC API。使用其中一个它工作正常,对于另一个,我总是得到一个空的结果。在联系了第二个 API 的供应商后,他们给我发了一个 PHP 示例脚本来使用该 API。我在设置中找不到任何差异,因此经过一些删除后,我发现发送的XML相差几个's:

<?xml version="1.0"?>
<methodCall>
<methodName>solde</methodName>
<params>
<param><value><struct>
<member><name>utilisateur</name><value><string>user</string></value></member>
<member><name>motDePasse</name><value><string>pass</string></value></member>
</struct></value>
</param>
</params>
</methodCall>

这是由Perl脚本发送的(我已经尝试过XML::RPC,Frontier::Client,RPC::XML - 在任何情况下都没有运气)。PHP脚本(有效的脚本)发送以下内容:

<?xml version="1.0"?>
<methodCall>
<methodName>solde</methodName>
<params>
<param>
<value><struct>
<member><name>identification</name>
<value><struct>
<member><name>utilisateur</name>
<value><string>user</string></value>
</member>
<member><name>motdePasse</name>
<value><string>pass</string></value>
</member>
</struct></value>
</member>
</struct></value>
</param>
</params>
</methodCall>

我看到的两者之间的唯一区别是几行换行符。我已经用两个 XML 发送了带有 curl 的 POST 请求,在 #1 的情况下我没有得到结果,在 #2 的情况下它有效。显然,第二个 API(顺便说一句用 PHP 编写)的实现更加自命不凡(提醒 - 在 API #1 中它适用于第一个 XML,API #2 - 没有结果)。

除了自己生成 XML 之外,我还能做些什么来解决此问题?有没有办法告诉任何一个现有的Perl XML-RPC库以服务器喜欢的方式格式化XML?

您自己的 XML 则完全不同。参数的内容正确

<value>
  <struct>
    <member>
      <name>utilisateur</name>
      <value>
        <string>user</string>
      </value>
    </member>
    <member>
      <name>motdePasse</name>
      <value>
        <string>pass</string>
      </value>
    </member>
  </struct>
</value>

但是 PHP 代码发送的版本将其包装在一个命名结构中,如下所示

<value>
  <struct>
    <member>
      <name>identification</name>

      <value>
        <struct>
          <member>
            <name>utilisateur</name>
            <value>
              <string>user</string>
            </value>
          </member>
          <member>
            <name>motdePasse</name>
            <value>
              <string>pass</string>
            </value>
          </member>
        </struct>
      </value>

    </member>
  </struct>
</value>

我希望这有帮助