WebService简单实例(一通百通)
Web Service为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前 进行Web Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较简单,出现时间比较早,SOAP比较复杂,主要是一些 需要稳定、健壮、安全并且复杂交互的时候使用。 <?php <?php /** * 函数:提供给客户端进行连接XML-RPC服务器端的函数 * 参数: * $host??需要连接的主机 * $port??连接主机的端口 * $rpc_server XML-RPC服务器端文件 * $request??封装的XML请求信息 * 返回:连接成功成功返回由服务器端返回的XML信息,失败返回false */ function write_file( $string ) { $fp = fopen( "xml.log","w" ); fprintf( $fp,"%sn",$string ); fclose( $fp ); } function rpc_client_call($host,$port,$rpc_server,$request) { ? ?//打开指定的服务器端 ? ?$fp = fsockopen($host,$port); ? ?//echo $fp."<br>"; ? ?//构造需要进行通信的XML-RPC服务器端的查询POST请求信息 ? ?$query = "POST $rpc_server HTTP/1.1rnUser_Agent: XML-RPC ClientrnHost: ".$host."rnContent-Type: text/xmlrnContent-Length: ".strlen($request)."rnrn".$request."rn"; ? ?//echo $query."<br>"; ? ? ? ?//把构造好的HTTP协议发送给服务器,失败返回false ? ?if (!fputs($fp,$query,strlen($query))) ? ?{ ? ?? ? $errstr = "Write error"; ? ?? ? echo $errstr."<br>"; ? ?? ? return false; ? ?} ? ? ? ?//获取从服务器端返回的所有信息,包括HTTP头和XML信息 ? ?$contents = ""; ? ?while (!feof($fp)) ? ?{ ? ?? ? $contents .= fgets($fp); ? ?} ? ?//关闭连接资源后返回获取的内容 ? ?fclose($fp); ? ?return $contents; } //构造连接RPC服务器端的信息 $host??= "localhost"; $port??= 80; $rpc_server = "/phpserv.php";//注意 这里一定要有 //把需要发送的XML请求进行编码成XML,需要调用的方法是rpc_server,参数是get $request = xmlrpc_encode_request("rpc_server",array( "get","helloworld")); //echo $request; //调用rpc_client_call函数把所有请求发送给XML-RPC服务器端后获取信息 $response = rpc_client_call($host,$request); write_file ( $response ); //echo "aaa".$response."xxx"."<br>"; //分析从服务器端返回的XML,去掉HTTP头信息,并且把XML转为PHP能识别的字符串 $split = "<?xml version="1.0" encoding="iso-8859-1"?>"; //echo "split=".$split."<br>"; $xml =??explode($split,$response); $xml = $split . array_pop($xml); $response = xmlrpc_decode($xml); /*输出从RPC服务器端获取的信息*/ print_r($response); ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |