You are here

调用语法错误

g089h515r806 的头像
Submitted by g089h515r806 on 星期三, 2009-08-26 15:41

如果你成功的连接到了服务器,尝试从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

Drupal版本: