【发布时间】:2018-01-08 03:02:57
【问题描述】:
我们使用 php xmlrpc 库向电子邮件提供商发出 xml rpc 请求。
这些一直有效,但是在新环境(php 5.6 而不是 5.3)上测试这些功能时,似乎xmlrpcmsg 在调用 xmlrpcmsg::serialize() 时不会构建参数值。即使当我 var_dump 对象时参数明显存在。
我包含库的方式是包含 xmlrpc.inc(// 版权所有 (c) 1999,2000,2002 Edd Dumbill。)尽管我找不到任何文档可以告诉我可能需要的任何扩展或 php 版本兼容性。
例子:
$this->msg = new xmlrpcmsg(
"contact.transactional", array(
// carer details
new xmlrpcval(
array(
"carer_id" => new xmlrpcval($data['Carer_ID'], "string"),
"email" => new xmlrpcval($data['CarerEmail'], "string"),
), "struct"
),
// campaign_id to be launched
new xmlrpcval($trigger['trigger_id'], "int"),
// transactional data to be passed into email template
new xmlrpcval(
array(
"carer_id" => new xmlrpcval($data['Carer_ID'], "int"),
"baby_id" => new xmlrpcval($data['Baby_ID'], "string"),
"carer_email" => new xmlrpcval($data['CarerEmail'], "string"),
), "struct"
),
)
);
当我在本地系统/已经上线的服务器上var_dump $this->msg->serialize() 时
<methodcall>
<methodname>contact.transactional</methodname>
<params>
<param>
<value>
<struct>
<member>
<name>email</name>
<value>
<string>adam+testest@testest.co.uk</string>
</value>
</member>
</struct>
</value>
<param>
<value>
<int>17458</int>
</value>
<param>
<value>
<struct>
<member>
<name>carer_id</name>
<value>
<string>654321</string>
</value>
</member>
<member>
<name>baby_id</name>
<value>
<string>123456</string>
</value>
</member>
<member>
<name>carer_email</name>
<value>
<string>adam+testest@testest.co.uk</string>
</value>
</member>
</struct>
</value>
</params>
</methodcall>
当我在新的测试服务器上var_dump$this->msg->serialize()
<methodcall>
<methodname>contact.transactional</methodname>
<params>
<param>
<value></value>
<param>
<value></value>
<param>
<value></value>
</params>
</methodcall>
【问题讨论】:
-
这看起来像是一个用户态库,而不是标准的 PHP XMLRPC extension。
标签: php xml serialization xml-rpc