ホームページ バックエンド開発 PHPチュートリアル PHP での XML-RPC の使用法の詳細な説明

PHP での XML-RPC の使用法の詳細な説明

Jun 20, 2016 pm 01:01 PM
php api

XML-RPCとは、Remote Procedure Callの略で、リモートマシン上のプロセス(メソッド)をローカルマシン上で呼び出す技術です。 「分散コンピューティング」は、個別のマシンの「相互運用性」を向上させるために発明されたテクノロジーです。

「データはプログラムである」という観点からすれば、RPCは何らかの通信手段を使って相互にデータ(情報)をやり取りすることに他ならないので、「高度な」通信手段でもありますが、この通信はこれは、「関数」として現れることが多く、交換する情報の本質を覆い隠すためです。
さまざまな RPC テクノロジの中で、最も有名なのは Sun の RPC だと思います。人気のあるネットワーク ファイル システム NFS は SUN RPC テクノロジに基づいています。
XMLRPC は、その名前が示すとおり (私は常にこのように物事を単純化するのが好きです。なぜなら、より良い名前の方が物事の本質を要約できることが多いからです。特定の名前が混乱を招く場合は、その名前をやめることをお勧めします。なぜなら、これを発明したのはこの人だからです。 (ほとんどの人は本質を知らないので、無駄な時間とエネルギーを費やす必要はありません。) XML 技術を応用した RPC です。では、XML とは何でしょうか?

XML も RPC と同様、eXtensible Markup Language の略称で、中国語でマークアップ言語を意味します。山括弧 (<>) で囲まれた言語です。 HTMLなど。 XML の拡張性は、XML が言語の形式のみを定義し、一般にタグとして知られるキーワードをあまり定義しないという事実にも反映されているため、ユーザーはタグの定義を自由に選択できます。その自由さと単純な文法規則により、さまざまなデータを表すために広く普及し、使用されています。 Lisp 言語 (「たくさんの」括弧として知られる言語) に慣れている学生は、XML が Lisp 言語に似ていると感じるかもしれません。違いは、XML が Lisp 言語の丸括弧 (()) の代わりに山括弧を使用することです。実際のところ、それらはすべて非常に似ており、非常に多くの言語が同等であるように見えますが、唯一の違いは言語を適用する人だけです。

XMLRPC では XML はどのような役割を果たしますか?

答えは「交換されるデータ形式」です。 Sun RPC では、呼び出し側によって渡されるデータはバイナリですが、XMLRPC では、データは XML 形式になります。では、なぜバイナリではなく XML を使用するのでしょうか?一方で、世の中にはC/C++などのコンパイル言語に加えて、Python、perl、 JavaScript など (最近の記事では、通常、メモリ自体を管理する必要がないため、これを「動的言語」とも呼んでいます)、一方で、リトル エンディアンとエンディアンの違いなど、オペレーティング システムの違いを分離するためのものです。ビッグエンディアン。さまざまな理由から、XMLRPC は情報の形式として中間言語である XML を選択し、各言語がそれを独自のネイティブ データ型に変換する責任を負います。さまざまな言語と互換性を持たせるために考案された中間言語として、CORBAインタフェースの定義に使用されるIDL(Interface Definition Language)もあります。

XML-RPC の詳細については、XMLRPC の仕様を公式 Web サイトで参照してください。XMLRPC 自体は非常に単純なので、信じられませんか?それでは、皆さんにも、加法的な XMLRPC の書き方を学んでいただくことにします。

サーバー側:

XMLRPC メッセージは標準の HTTP プロトコルを使用して送信されるため、サーバーも Apache 上で実行される php を使用して開発されており、必要な条件として、システム開発ライブラリに php 言語 xmlrpc をインストールする必要があります。多くの場合、php では XMLRPC のサポートが有効になっていないため、phpxmlrpc を選択しました。

ダウンロード後、その lib ディレクトリをコピーし、libphpxmlrpc という名前を付けます。以下に最初の XMLRPC 実装を記述します。 ファイル: xmlrpc_server.php


include ("libphpxmlrpc/xmlrpc.inc");
include ("libphpxmlrpc/xmlrpcs.inc");

if ($_SERVER['REQUEST_METHOD'] != 'POST')
exit(0);

$add_sig = array(array($xmlrpcString, $xmlrpcInt, $xmlrpcInt));
$add_doc = "Add the two integer together";

function add($params)
{
global $xmlrpcerruser;

$val = php_xmlrpc_decode($params);

$ret = $val[0] + $val[1];

return new xmlrpcresp(new xmlrpcval($ret, "int"));
}

$server = new xmlrpc_server(array(
"add" => array(
                "function" => "add",
                "signature" => $add_sig,
                "docstring" => $add_doc
        )));

?>

とても単純明快だと思いませんか?上記のコードを通じて、CPCS (コピー、貼り付け、変更、保存) メソッドを使用して、より多くの XMLRPC についての推論を確実に行うことができると思います。

クライアント:

プログラムが正しいかどうかをテストするには、クライアントを作成する必要があります。何を使用して作成すればよいでしょうか?あるいは、どちらを書くのがより便利ですか?ちょっと考えてみたところ、Python は比較的単純なはずです。簡単に Google で検索したところ、xmlrpc の実装が CPCS メソッドですぐに記述されたことがわかりました。 >

次のように:

ファイル: xmlrpc_client.py

#!/bin/env python
#!/bin/env python

from xmlrpclib import *
import sys

# xmlrpc add sample in python
server = Server("http://127.0.0.1/~xiaosuo/xmlrpc/xmlrpc_server.php");

try:
        retval = server.add(12, 13)
        print retval

except Error, v:
        print "Error", v
xmlrpclib インポートから *

インポートシステム

# xmlrpc Python でサンプルを追加
xiaosuo@gentux xmlrpc $ ./xmlrpc_client.py
25
server = Server("http://127.0.0.1/~xiaosuo/xmlrpc/xmlrpc_server.php"); 試してみてください: retval =server.add(12, 13) print retval エラーを除く、v: print "エラー"、v テーブル> 注: 私が開発したルート ディレクトリは /home/xiaosuo/xmlrpc/ なので、Web ページのディレクトリは当然、以下と同じ http://127.0.0.1/~xiaosuo/xmlrpc/ になります。 テスト: xiaosuo@gentux xmlrpc $ ./xmlrpc_client.py 25 テーブル>

わかりました!ではごきげんよう。
以下にいくつかの言語実装バージョンがあります。ご自身で分析し、CPCS メソッドを通じて使用方法を学習してください。
phpxmlrpc の php バージョンを使用します:


include ("libphpxmlrpc/xmlrpc.inc");
include ("libphpxmlrpc/xmlrpcs.inc");

if (isset($_POST['var1']) && isset($_POST['var2'])) {
$client = new xmlrpc_client("http://127.0.0.1/~xiaosuo/xmlrpc/xmlrpc_server.php");
$msg = new xmlrpcmsg("add", array(
new xmlrpcval($_POST['var1'], "int"),
new xmlrpcval($_POST['var2'], "int")));
$retval = &$client->send($msg);
        if ($retval->faultCode()) {
                print_r("An error occurred: ");
                print_r("Code: " . htmlspecialchars($retval->faultCode())
                        . " Reason: " . htmlspecialchars($retval->faultString()));
        } else {
                $sum = $retval->value()->scalarval();
        }
}

?>

"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">


xmlrpc add sample in php


>
/>
+
/>

/>


include ("libphpxmlrpc/xmlrpc.inc");

include ("libphpxmlrpc/xmlrpcs.inc");
#!/bin/bash

xmlrpc http://127.0.0.1/~xiaosuo/xmlrpc/xmlrpc_server.php add i/12 i/13
if (isset($_POST['var1']) && isset($_POST['var2'])) { $client = new xmlrpc_client("http://127.0.0.1/~xiaosuo/xmlrpc/xmlrpc_server.php"); $msg = new xmlrpcmsg("add", array( new xmlrpcval($_POST['var1'], "int"), new xmlrpcval($_POST['var2'], "int"))); $retval = &$client->send($msg); If ($retval->faultCode()) { print_r("エラーが発生しました: "); print_r("コード: " . t;faultCode()) " 理由: " .htmlspecialchars($retval->faultString())); } else { $sum = $retval->value()->scalarval(); } } ?> <頭> xmlrpc php にサンプルを追加 <フォームメソッド="POST" + テーブル> xmlrpc-c の xmlrpc コマンドのシェル バージョンを使用します: #!/bin/bash xmlrpc http://127.0.0.1/~xiaosuo/xmlrpc/xmlrpc_server.php add i/12 i/13 テーブル>

C 言語バージョンの xmlrpc-c を使用します:


/*
 * Compile method:
 * gcc -o xmlrpc_client.out `xmlrpc-c-config --libs --cflags` xmlrpc_client.c -lxmlrpc_client
 */
#include
#include
#include
#include

#define NAME "XML-RPC C Test Client"
#define VERSION "1.0"

#define die_if_fault_occurred(x) /
        do { /
                if ((x)->fault_occurred) /
                abort(); /
        } while(0)

int main(int const argc, const char ** const argv)
{
        xmlrpc_env env;
        xmlrpc_value * resultP;
        int sum;
        char *const url = "http://127.0.0.1/~xiaosuo/xmlrpc/xmlrpc_server.php";
        char *const methodName = "add";

        /* Initialize our error-handling environment. */
        xmlrpc_env_init(&env);

        /* Start up our XML-RPC client library. */
        xmlrpc_client_init2(&env, XMLRPC_CLIENT_NO_FLAGS, NAME, VERSION, NULL, 0);
        die_if_fault_occurred(&env);

        /* Make the remote procedure call */
        resultP = xmlrpc_client_call(&env, url, methodName,
                        "(ii)", (xmlrpc_int32) 12, (xmlrpc_int32) 13);
        die_if_fault_occurred(&env);

        /* Get our state name and print it out. */
        xmlrpc_parse_value(&env, resultP, "i", &sum);
        die_if_fault_occurred(&env);
        printf("The sum  is %d/n", sum);

        /* Dispose of our result value. */
        xmlrpc_DECREF(resultP);

        /* Clean up our error-handling environment. */
        xmlrpc_env_clean(&env);

        /* Shutdown our XML-RPC client library. */
        xmlrpc_client_cleanup();

        return 0;
}

Frontier ライブラリを使用する Perl バージョン:

#!/bin/env perl
#

use strict;
use warnings;
use Frontier::Client;

my $server = Frontier::Client->new(
        url => "http://127.0.0.1/~xiaosuo/xmlrpc/xmlrpc_server.php");

my $sum = $server->call("add", (12, 13));

print $sum . "/n";


XMLRPC のサポート範囲を嘆き始めていませんか? 実際、さらに多くの言語サポートについては、XMLRPC の公式 Web サイトで実装リストを確認してください。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP で API が例外処理と再試行メカニズムを処理する方法 PHP で API が例外処理と再試行メカニズムを処理する方法 Jun 17, 2023 pm 03:52 PM

PHP の API が例外処理と再試行メカニズムを処理する方法 PHP では、API がさまざまな機能を提供するため、多くの Web サイトやアプリケーションの中核となっています。ただし、API を使用すると、ネットワーク接続の問題、応答のタイムアウト、無効なリクエストなど、多くの問題が発生することがよくあります。この場合、アプリケーションの信頼性と安定性を確保するために、例外と再試行メカニズムを処理する方法を理解する必要があります。例外処理 PHP では、例外処理はよりエレガントで読みやすいエラー処理です。

PHP Kuaishou API インターフェイス開発ガイド: ビデオのダウンロードおよびアップロード システムを構築する方法 PHP Kuaishou API インターフェイス開発ガイド: ビデオのダウンロードおよびアップロード システムを構築する方法 Jul 22, 2023 am 11:13 AM

PHP Kuaishou API インターフェイス開発ガイド: ビデオのダウンロードおよびアップロード システムを構築する方法 はじめに: ソーシャル メディアの急速な発展に伴い、インターネット上で自分の人生の瞬間を共有したいと思う人がますます増えています。その中でも、ショートビデオプラットフォームの人気は高まり続けており、人々が自分の生活やエンターテイメントを記録して共有する重要な方法となっています。 PHP Kuaishou API インターフェイスは、開発者が機能豊富なビデオのダウンロードおよびアップロード システムを構築するのに役立つ強力なツールです。この記事では、PHP Kuaishou API インターフェイスを使用して、

API が PHP でキャッシュと冗長データを処理する方法 API が PHP でキャッシュと冗長データを処理する方法 Jun 17, 2023 pm 08:27 PM

PHP は、Web 開発で広く使用されている非常に人気のあるサーバー側スクリプト言語です。 Web 開発において、API はクライアントとの通信を担う非常に重要なコンポーネントです。中でも、API のパフォーマンスと効率は、アプリケーションのユーザー エクスペリエンスにとって非常に重要です。キャッシュとデータの冗長性は API 開発における 2 つの重要な概念です。この記事では、PHP でこれらを処理して API のパフォーマンスと信頼性を向上させる方法を紹介します。 1. キャッシュの概念 キャッシュは、Web アプリケーションで広く使用されている最適化テクノロジです。

PHP Kuaishou API インターフェイスを介してビデオを収集および共有する方法 PHP Kuaishou API インターフェイスを介してビデオを収集および共有する方法 Jul 21, 2023 pm 03:46 PM

PHP Kuaishou API インターフェイスを通じて、ビデオの収集と共有が実現でき、モバイル インターネットの時代において、短いビデオは人々の生活に欠かせないものになりました。中国の主流のショートビデオソーシャルプラットフォームとして、Kuaishou は巨大なユーザーベースを持っています。ユーザーエクスペリエンスを向上させるために、PHP Kuaishou API インターフェイスを通じてビデオの収集と共有機能を実装し、ユーザーがお気に入りのビデオをより便利に管理および共有できるようにします。 1. Kuaishou API を使用する Kuaishou は、ビデオ検索、ビデオ詳細、ビデオ コレクション、ビデオ分析などの豊富な API インターフェイスを提供します。

PHP APIを使用してTwitterボットを作成する方法 PHP APIを使用してTwitterボットを作成する方法 Jun 20, 2023 am 08:32 AM

ソーシャルメディアの人気に伴い、Twitterなどのソーシャルメディアプラットフォームをマーケティングやプロモーションに利用する人が増えています。このアプローチは効果的ですが、アクティブな状態を維持するには多大な時間と労力が必要です。 Twitter でブランドやサービスを宣伝したいが、アクティブな Twitter アカウントを管理するための十分な時間やリソースがない場合は、Twitter ボットの使用を検討してください。 Twitter ボットは、Twitter 上で独自の投稿を作成するのに役立つ自動ツールです。

PHP で API が複数の API クライアントを処理する方法 PHP で API が複数の API クライアントを処理する方法 Jun 17, 2023 pm 11:39 PM

最新の Web アプリケーションでは、通常、API インターフェイスはサービス インターフェイスを実装する方法です。このような API インターフェースを PHP 言語で実装する場合、複数の API クライアントをどのように処理するかを考慮する必要があります。通常の状況では、各 API クライアント リクエストは、PHP によって実装された RESTful インターフェイスを通じて処理されます。しかし、大量のAPIクライアントリクエストを処理する必要がある場合、インターフェースの処理効率を向上させ、システムのオーバーヘッドをいかに削減するかが喫緊の課題となっています。

PHP の API のエラー処理のベスト プラクティス PHP の API のエラー処理のベスト プラクティス Jun 17, 2023 am 10:37 AM

広く使用されているプログラミング言語として、PHP は Web アプリケーション開発の主要ツールの 1 つになっています。アプリケーションがデータベース、他の Web サービス、サードパーティのサーバーなどの複数の外部システムと対話する必要がある場合、API を使用するのが一般的な実装方法です。ただし、PHP で API を作成する場合、エラー処理は非常に重要な部分です。優れたエラー処理方法は、アプリケーションの信頼性と堅牢性を継続的に向上させるだけでなく、API の使用エクスペリエンスも大幅に向上させます。ここではその中でも特に優れたものをいくつか紹介します

PHP Kuaishou API インターフェイス開発ガイド: ビデオ再生およびコメント システムを構築する方法 PHP Kuaishou API インターフェイス開発ガイド: ビデオ再生およびコメント システムを構築する方法 Jul 21, 2023 pm 10:37 PM

PHP Kuaishou API インターフェイス開発ガイド: ビデオ再生およびコメント システムの構築方法 はじめに: Kuaishou プラットフォームの台頭により、多くの開発者がその API インターフェイスを通じてさまざまなアプリケーションを開発しました。この記事では、読者がすぐに使い始めて独自のアプリケーションを構築できるように、PHP を使用して Kuaishou ビデオ再生およびコメント システムの API インターフェイスを開発する方法を紹介します。 1. 準備作業 開始する前に、次の準備作業が完了していることを確認する必要があります。 PHP 環境のインストール: ローカル開発環境に PH をセットアップする必要があります。

See all articles