Rumah php教程 php手册 PHP-WebService的最常用的两种方法

PHP-WebService的最常用的两种方法

Jun 21, 2016 am 08:57 AM

Ping Service,博客程序提供一种通知机制,以便在第一时间将博客的更新信息发布到提供Ping Service服务的网站,写聚合的时候研究了一下

Ping Service,博客程序提供一种通知机制,以便在第一时间将博客的更新信息发布到提供Ping Service服务的网站,写聚合的时候研究了一下

先看 标准 吧

这是一个标准的Ping Service,用XMLRPC来传数据的,注释写的这么详细,代码说明就不需要了吧,PHP5开启XMLRPC方法

client.php

$host  = 'zxsv';
$port  = 80;
$rpc_server = '/test/xmlrpc_server.php';
$title = 'zxsv';
$server = 'http://zxsv/test/';
$rss = 'http://zxsv/test/rss.php';
//weblogUpdates.Ping方法
$Ping = xmlrpc_encode_request('weblogUpdates.Ping', array($title, $server ));
//weblogUpdates.extendedPing方法
$extendedPing = xmlrpc_encode_request('weblogUpdates.extendedPing', array($title, $server, $rss ));
//调用rpc_client_call函数把所有请求发送给XML-RPC服务器端后获取信息
$response = rpc_client_call($host, $port, $rpc_server, $Ping);
$split = '';
$xml =  explode($split, $response);
$xml = $split . array_pop($xml);
$response = xmlrpc_decode($xml);
//输出从RPC服务器端获取的信息
print_r($response);
/**
* 函数:提供给客户端进行连接XML-RPC服务器端的函数
* 参数:
* $host  需要连接的主机
* $port  连接主机的端口
* $rpc_server XML-RPC服务器端文件
* $request  封装的XML请求信息
* 返回:连接成功成功返回由服务器端返回的XML信息,失败返回false
*/
function rpc_client_call($host, $port, $rpc_server, $request) {
   $fp = fsockopen($host, $port);
   $query = "POST $rpc_server HTTP/1.0\nUser_Agent: XML-RPC Client\nHost: ".$host."\nContent-Type: text/xml\nContent-Length: ".strlen($request)."\n\n".$request."\n";
   if (!fputs($fp, $query, strlen($query))) {
       $errstr = "Write error";
       return false;
   }
   $contents = '';
   while (!feof($fp)){
       $contents .= fgets($fp);
   }
   fclose($fp);
   return $contents;
}
?>

server.php

/**
* 函数:提供给RPC客户端调用的函数
* 参数:
* $method 客户端需要调用的函数
* $params 客户端需要调用的函数的参数数组
* 返回:返回指定调用结果
*/
function rpc_server_extendedping($method, $params) {
    $title = $params[0];
    $server = $params[1];
    $rss = $params[2];
        //中间的判断,成功返回$XML_RPC_String
    $XML_RPC_String = array('flerror'=>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

class Pings {
    public $xmlrpc_server;
    public $xmlrpc_response;
    public $methodName;   
    public function __construct() {
        //产生一个XML-RPC的服务器端
        $this->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的最常用的两种方法算是写齐了



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)