简体   繁体   English

如何从 PHP 中的 XMLRPC 服务器方法返回错误响应?

[英]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.

相关问题 来自 PHP 的响应 xmlrpc_server_call_method 编码错误 - Response from PHP xmlrpc_server_call_method has wrong encoding 本地php xmlrpc解码xmlrpc服务器响应缓慢 - native php xmlrpc slow to decode xmlrpc server response 如何从php中的方法返回变量和数组? - How do I return an variable and an array from a method in php? PHP xmlrpc客户端和Python 2.5 xmlrpc服务器:不完整数据和连接重置由对等错误 - PHP xmlrpc client and Python 2.5 xmlrpc server: incomplete data and Connection reset by peer error gzinflate():python-xmlrpc 服务器和 php-xmlrpc 客户端之间的数据错误 - gzinflate(): data error between a python-xmlrpc server and php-xmlrpc client 如何在服务器请求方法中验证 recaptcha 响应测试? - How do I verify recaptcha response test in server request method? 如何解析此php服务器响应以消除空元素? - How do I parse this php server response to eliminate empty elements? xmlrpc不支持的方法用php调用 - xmlrpc unsupported method call with php PHP:如何从$ .post请求返回数据作为响应? - PHP: How can I return data as response from $.post request? 如何从带有PHP预准备语句的SQL Server存储过程中返回多个结果? - How do I return multiple results from a SQL Server Stored Procedure with PHP prepared statements?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM