Perl XML-RPC 输出format/schema
Perl XML-RPC output format/schema
我正在用 Perl 编写脚本以使用两个 XML-RPC APIs。其中一个效果很好,而另一个我总是得到一个空的结果。
在联系了第二个 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>
我看到的两者之间的唯一区别是一些换行符。我已经用两个 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>
希望对您有所帮助
我正在用 Perl 编写脚本以使用两个 XML-RPC APIs。其中一个效果很好,而另一个我总是得到一个空的结果。 在联系了第二个 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>
我看到的两者之间的唯一区别是一些换行符。我已经用两个 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>
希望对您有所帮助