PHP XML-RPC / JSON-RPC クライアントとサーバーで XML-RPC と JSON-RPC の例やチュートリアルを探しています
誰か教えてくれませんか?
ありがとうございました?申し訳ありませんが、私の英語はうまくありません。
PHP XML-RPC / JSON-RPC クライアントとサーバーで XML-RPC と JSON-RPC の例やチュートリアルを探しています
誰か教えてくれませんか?
ありがとうございました?申し訳ありませんが、私の英語はうまくありません。
json-rpc サービスを実装する最善の方法は、Zend コンポーネント Zend_Json_Server を使用することだと思います。
したがって、Zend_Json コンポーネントを使用して json-rpc サービスを php に実装することをお勧めします。Zend フレームワークでは、そのコンポーネントを「すぐに」使用できます。したがって、次のような構造を実行できます。
Project
|
------libs/Zend
|
-----Json/
|
-----Server/
|
-----Loader.php
そして、次のようなものを実装します。
<?php
// path to dir with Zend root
set_include_path(__DIR__ . "/libs");
// path to Zend loader
require_once __DIR__ . "/libs/Zend/Loader.php";
Zend_Loader::loadClass('Zend_Json_Server');
$server = new Zend_Json_Server();
$server->setClass('Service');
/**
* Service Implementation
*/
class Service
{
public function __construct()
{
// init some service attributes ...
}
/**
* example of api method exposed by service
* return "hello world" message
* @param $domain
* @return object (json)
*/
public function helloworld()
{
$aOut = array('msg' => 'hello world');
return json_encode($aOut);
}
// ... other methods of the service
}
try {
$output = $server->handle();
echo $output;
} catch (Exception $e) {
echo ($e->getMessage());
//header('HTTP/1.1 400 BAD REQUEST');
exit();
}
クライアントについては、ポスト リクエストで次のような json メッセージを送信できます。
{
"jsonrpc": "2.0",
"method": "helloworld",
"params": {},
"id": 1
}
この投稿Send json post using phpでは、curl または Http Zend モジュールを介した json リクエストの例をいくつか見ることができます。
RPC プロトコルに vdata を使用します: http://vdata.dekuan.org/
1、PHPとJavaScriptはどちらもOKです。
2, クロスオリジン リソース共有 (CORS) 呼び出しは引き続き問題ありません。
PHP : クライアントでサービスを呼び出す
dekuan\vdata\CConst を使用します。 dekuan\vdata\CRequest を使用します。 $cRequest = CRequest::GetInstance(); $arrResp = []; $nCall = $cRequest->Post ( [ 'url' => 'http://api-account.dekuan.org/login', 'データ' => [ 'u_name' => 'ユーザー名', 'u_pwd' => 'パスワード', 'u_keep' => 1 ]、 'version' => '1.0', // サービスの必要なバージョン 'timeout' => 30, // 秒単位のタイムアウト 'cookie' => [], // 配列でも文字列でもどちらでもかまいません。 ]、 $arrResp ); if ( CConst::ERROR_SUCCESS == $nCall && $cRequest->IsValidVData( $arrResp ) ) { // arrResp // 'errorid' : エラー ID // 'errordesc' : エラーの説明 // 'vdata' : 仮想データ // 'version' : サービスのインサービス バージョン // 'json' : 元の json 配列 print_r( $arrResp ); }
PHP : サーバーでクライアントに応答する
dekuan\vdata\CResponse を使用します。 $cResponse = CResponse::GetInstance(); $cResponse->SetServiceName( 'vdata プロトコル サービス' ); $cResponse->SetServiceUrl( 'http://vdata.dekuan.org/vdata' ); $cResponse->送信 ( 0, // エラー ID "error desc", // エラーの説明 [ "info" => "..." ], // カスタマイズされた情報 '1.0' // サービスのインサービス バージョン );