[英]How do I return an error response from a XMLRPC server method in PHP?
If I use xmlrpc_server_call_method()
in PHP, the resulting XML is generated for me.如果我在 PHP 中使用
xmlrpc_server_call_method()
,则会为我生成结果 XML。 It works fine for regular responses, but let's say my method doesn't succeed (eg. post creation), how do I send a valid error response, like an error code?它适用于常规响应,但假设我的方法不成功(例如创建后),我如何发送有效的错误响应,如错误代码?
Example:例子:
function make_post($input) {
// try to do a thing …
if($post_created == true) {
return $post_id;
} else {
// how do I trigger an actual error response?
return false; // ?
}
}
// set up a server
$server = xmlrpc_server_create();
xmlrpc_server_register_method($server, 'metaWeblog.newPost', 'make_post');
// fake a request
$request = xmlrpc_encode_request("metaWeblog.newPost", null, array('encoding' => 'utf-8'));
// call make_post()
$response = xmlrpc_server_call_method($server, $request, null, [
'encoding' => 'utf-8'
]);
var_dump($response);
Output: Output:
<?xml version="1.0" encoding="utf-8"?>
<methodResponse>
<params>
<param>
<value>
<boolean>0</boolean>
</value>
</param>
</params>
</methodResponse>
Expected: (or similar)预期:(或类似)
<?xml version="1.0" encoding="utf-8"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>4</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Too many parameters.</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
Instead of false
return array('faultCode' => 666, 'faultString' => 'DOH!')
to have an xmlrpc fault response (with your own code and string naturally, 666 and 'DOH:' are just exemplary):而不是
false
return array('faultCode' => 666, 'faultString' => 'DOH!')
有一个 xmlrpc 故障响应(自然地使用您自己的代码和字符串,666 和 'DOH:' 只是示例):
function make_post($input) {
// ...
if ($post_created) {
return $post_id;
}
return array('faultCode' => 666, 'faultString' => 'DOH!');
}
You can verify such an array value as well with xmlrpc_is_fault(php)
and that manual page also gives more description about that array:您也可以使用
xmlrpc_is_fault(php)
验证这样的数组值,该手册页还提供了有关该数组的更多描述:
Fault description is available in
$arg["faultString"]
, fault code is in$arg["faultCode"]
.$arg["faultString"]
中有故障描述,$arg["faultCode"]
中有故障代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.