You are here

XML-RPC 客户端例子:获取州名

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

  让我们尝试一个稍微复杂的例子。它仅仅复杂了一点点,因为你不但发送了你所调用的远程方法的名称,而且还包括了一个参数。UserLand软件在站点betty.userland.com运行了一个web服务:它将50个美国的州以字母顺序排列。所以如果你请求第1个州,它返回Alabama。第50个州为Wyoming。方法的名称为examples.getStateName。让我们向它请求列表中的第3个州:

 
$state_name = xmlrpc('http://betty.userland.com/RPC2', 'examples.getStateName', 3);
 
它将$state_name设置为Arizona.下面是Drupal发送的XML(为了简洁,从这里起我们省略了HTTP头部)
 
<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value>
<int>3</int>
</value>
</param>
</params>
</methodCall>
 
下面是你从betty.userland.com获得的相应:
 
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>Arizona</value>
</param>
</params>
</methodResponse>
 
注意,Drupal能够自动的识别你传递的参数是一个整数,并在你的请求中以此来对它编码。但是在响应中发生了什么呢?在返回值的周围没有使用任何类型标签。难道不是这种形式么<value><string>Arizona</string></value>?是的,这个也能工作。不过在XML-RPC中,一个没有类型的值将被默认为字符串类型,这样更简洁。
Drupal中,进行一个XML-RPC客户端调用是非常简单的。仅用一行代码:
 
$result = xmlrpc($url, $method, $param_1, $param_2, $param_3...)
 老葛的Drupal培训班  Think in Drupal

Drupal版本: