Perl XML-RPC输出格式/模式

时间:2015-06-18 14:07:39

标签: php xml perl rpc xml-rpc

我正在Perl中编写一个脚本来使用两个XML-RPC API。有一个它工作正常,另一个我总是得到一个空的结果。 在联系第二个API的供应商之后,他们向我发送了一个PHP示例脚本以便与API一起运行。我在设置中找不到任何差异,所以经过一些重新调整后我发现发送的XML差异很少\ ns:

<?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>

我看到的两者之间的唯一区别是一些换行符。我已经用curl发送了带有两个XML的POST请求,并且在#1的情况下我得不到结果,如果#2它可以工作。 显然,第二个API(用PHP编写的btw)的实现更加自命不凡(提醒 - 在API#1中,它与第一个XML,API#2一起工作 - 没有结果)。

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

1 个答案:

答案 0 :(得分:1)

您自己的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>

我希望这会有所帮助