php企业级应用之webservice篇
ping service,博客程序提供一种通知机制,以便在第一时间将博客的更新信息发布到提供ping service服务的网站,写聚合的时候研究了一下。
先看 标准 吧
这是一个标准的ping service,用xmlrpc来传数据的,注释写的这么详细,代码说明就不需要了吧,php5开启xmlrpc方法
client.php
以下为引用的内容:
server.php
以下为引用的内容:
false,'message'=>'thanks for the ping.');
return $xml_rpc_string;
}
function rpc_server_ping($method, $params) {
$title = $params[0];
$server = $params[1];
//中间的判断,成功返回$xml_rpc_string
$xml_rpc_string = array('flerror'=>false,'message'=>'thanks for the ping.');
return $xml_rpc_string;
}
//产生一个xml-rpc的服务器端
$xmlrpc_server = xmlrpc_server_create();
//注册一个服务器端调用的方法rpc_server,实际指向的是rpc_server_extendedping函数
xmlrpc_server_register_method($xmlrpc_server, weblogupdates.extendedping, rpc_server_extendedping);
xmlrpc_server_register_method($xmlrpc_server, weblogupdates.ping, rpc_server_ping);
//接受客户端post过来的xml数据
$request = $http_raw_post_data;
//print_r($request);
//执行调用客户端的xml请求后获取执行结果
$xmlrpc_response = xmlrpc_server_call_method($xmlrpc_server, $request, null);
//把函数处理后的结果xml进行输出
header('content-type: text/xml');
echo $xmlrpc_response;
//销毁xml-rpc服务器端资源
xmlrpc_server_destroy($xmlrpc_server);
?>
类写的,有bug
以下为引用的内容:
xmlrpc_server = xmlrpc_server_create ();
$this->run ();
}
//注册一个服务器端调用的方法rpc_server,实际指向的是ping函数
public function rpc_server() {
$this->methodname = !$this->methodname ? 'weblogupdates.extendedping':'weblogupdates.ping';
xmlrpc_server_register_method ( $this->xmlrpc_server, $this->methodname, array (__class__, ping));
}
/**
* 函数:提供给rpc客户端调用的函数
* 参数:
* $method 客户端需要调用的函数
* $params 客户端需要调用的函数的参数数组
* 返回:返回指定调用结果
*/
public function ping($method, $params) {
$this->title = $params [0];
$this->server = $params [1];
$this->rss = $params [2];
$this->tag = $params [3];
//$a = $this->title ? $this->update():'';
$string = array ('flerror' => false, 'message' => 'thanks for the ping.', 'legal' => you agree that use of the blueidea.com ping service is governed by the terms of use found at www.blueidea.com. );
return $string;
}
public function update(){
echo '这里放更新的一些条件';
}
public function run() {
$this->rpc_server ();
$request = isset ( $globals [http_raw_post_data] ) ? file_get_contents ( php://input ) : $globals [http_raw_post_data];
$this->xmlrpc_response = xmlrpc_server_call_method ( $this->xmlrpc_server, $request, null );
//把函数处理后的结果xml进行输出
header ( 'content-type: text/xml' );
echo $this->xmlrpc_response;
}
//销毁xml-rpc服务器端资源
public function __destruct() {
xmlrpc_server_destroy ( $this->xmlrpc_server );
}
}
$obj = new pings ( );
?>
webservice的最常用的两种方法算是写齐了