如果你成功的连接到了服务器,尝试从betty.userland.com获取州名,但是却忘记提供州号了,而这个又是必须的参数:
$state_name = xmlrpc('http://betty.userland.com/RPC2', 'examples.getStateName');
远程服务器返回以下结果:
<?xml version="1.0"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value>
<int>4</int>
</value>
</member>
<member>
<name>faultString</name>
<value>
<string>Can't call "getStateName" because there aren't enough
parameters.</string>
</value>
</member>
</struct>
</value>
</fault>
</methodResponse>
与服务器的连接是好的;前面的代码返回的HTTP响应为200 OK.在XML响应中, faultCode用来标记错误,并使用一个字符串来描述错误.你的错误处理代码应该与前面一样:
$state_name = xmlrpc('http://betty.userland.com/RPC2', 'examples.getStateName');
if ($error = xmlrpc_error()) {
if ($error->code <= 0) {
$error->message = t('Outgoing HTTP request failed because the socket could
not be opened.');
}
drupal_set_message(t('Could not get state name because the remote site gave
an error: %message (@code).', array(
'%message' => $error->message,
'@code' => $error->code
)
)
);
这将为用户生成如下所示的消息:
无法获取州名,因为远程网站给出了一个错误:由于参数不够,导致无法调用"getStateName". (4)
注意当你报告错误的时候,你应该指出3件事情:你想要做什么,为什么你不能完成它,和其它一些你可以获取到的额外信息。通常一个友好的错误信息将通过drupal_set_message()来显示给用户,同时一个更加详细的错误信息将会写到watchdog中去并可通过“管理➤报告➤最近日志条目”来查看。
老葛的Drupal培训班 Think in Drupal