我想生成一个包含struct作为标记的请求。如在xmlrc_ecode_request
中那样,如果我将第二个变量作为任何值传递,那么" int"生成标签,如果我传递任何字符串"字符串"标签是用值生成的。
我需要生成如下所示:
<?xml version="1.0"?>
<methodCall>
<methodName>Request.getName</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>RequestNumber</name>
<value><string>00471627612</string></value>
<name>Request2</name>
<value><string>471627612</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
请帮我生成上述请求。 谢谢, 萨米特
答案 0 :(得分:0)
您可以使用array
作为参数:
$method = 'Request.getName';
$params = [
'RequestNumber' => '00471627612',
'Request2' => '471627612'
];
$request = xmlrpc_encode_request($method, $params, ['encoding' => 'utf-8']);
print_r($request);
但xmlrpc_encode_request()
不允许将数组放入相同的member
标记(在PHP 5.6.2上检查)。所以你的新结构将如下所示:
<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>Request.getName</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>RequestNumber</name>
<value>
<string>00471627612</string>
</value>
</member>
<member>
<name>Request2</name>
<value>
<string>471627612</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
答案 1 :(得分:0)
为了以这种方式生成输出,您只需要传递一个关联数组。所以这:
<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>methodname</methodName>
<params>
<param>
<value>
<string>username</string>
</value>
</param>
<param>
<value>
<string>password</string>
</value>
</param>
<param>
<value>
<struct>
<member>
<name>first_name</name>
<value>
<string>John</string>
</value>
</member>
<member>
<name>last_name</name>
<value>
<string>Smith</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
输出:
img
请注意,第一个数组只是值,第二个是关联(名称/值对),它创建结构化块。只需添加另一个数组即可创建另一个块。