PHP-WebService で最もよく使用される 2 つのメソッド

WBOY
リリース: 2016-06-21 08:57:20
オリジナル
1028 人が閲覧しました

ブログプログラムは、Ping Service サービスを提供する Web サイトにブログの更新情報をできるだけ早く公開するための通知メカニズムを提供します。

を集計するときに勉強しました。

Ping Service は、Ping Service サービスを提供する Web サイトにブログの更新情報をできるだけ早く公開するための通知メカニズムを提供するブログ プログラムです。

を作成するときにそれについて勉強しました。

まず基準を見てみましょう

これは、XMLRPC を使用してデータを送信する標準の Ping サービスです。コメントは非常に詳細なので、PHP5 で XMLRPC メソッドを有効にする必要はありません。

client.php

$host = 'zxsv';
$ポート = 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.0nUser_Agent: XML-RPC ClientnHost: ".$host."nContent-Type: text/xmlnContent-Length: ".strlen($request)."nn".$request."n ";
if (!fputs($fp, $query, strlen($query))) {
$errstr = "書き込みエラー";
return false;
}
$contents = '';
while (!feof($fp)){
$contents .= fgets($fp);
}
fclose($fp);
$content を返します;
}
?>
server.php

/**
* 関数: RPC クライアントから呼び出されるために提供される関数
* パラメータ:
* $method はクライアントが呼び出す必要がある関数です
* $params は、クライアントが呼び出す必要がある関数のパラメータ配列です
* Return: 指定された呼び出し結果を返します
*/
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'=>'ping ありがとうございます。');
$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'=>'ping ありがとうございます。');
$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");
//クライアントからの XML データ POST を受け取ります
$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); ?>

同様の方法で書かれていますが、バグがあります

クラス Pings {
パブリック $xmlrpc_server;
パブリック $xmlrpc_response;
パブリック $メソッド名
パブリック関数 __construct() {
// XML-RPC サーバー側を生成
$this->xmlrpc_server = xmlrpc_server_create ();
$this->run ();
}

//サーバーによって呼び出されるメソッド rpc_server を登録します。これは実際には ping 関数を指します
パブリック関数 rpc_server() {
$ this-> methodname =!$ this-> methodname? xmlrpc_server_register_method ( $this->xmlrpc_server, $this->methodName, array (__CLASS__, "ping")); }
/**
* 関数: RPC クライアントから呼び出されるために提供される関数
* パラメータ:
* $method クライアントが呼び出す必要がある関数
* $params は、クライアントが呼び出す必要がある関数のパラメータ配列です
* Return: 指定された呼び出し結果を返します
​​*/ パブリック関数 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' => 'ping ありがとうございます。', 'legal' => "blueidea.com ping サービスの使用には規約が適用されることに同意するものとします。使用方法は www.blueidea.com にあります。" );
return $string;
}

パブリック関数 update(){
echo '更新の条件は次のとおりです';
}

パブリック関数 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 サーバー側リソースを破棄します
パブリック関数 __destruct() {
xmlrpc_server_destroy ( $this->xmlrpc_server );
}
}
$Obj = 新しい Ping ( );
?>

WebService で最もよく使用される 2 つのメソッドを書き留めました


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート