phprpc使用问题

按照文档讲述使用check.php调试工具可以正常访问RPC接口中的方法。客户端怎么使用RPC协议访问服务端的这个接口?
求个客户端的demo  客户端也是php,src下的cloudpc是客户端,访问调用app中的App.Site.Index

$ php ./vendor/phalapi/phprpc/bin/check.php http://localhost/phalapi/publi ... Index
屏幕快照_2019-04-04_17.53_.39_.png
已邀请:

dogstar - PhalApi创始人

赞同来自:

如果客户端是PHP,可以参考check.php的写法:
require_once dirname(__FILE__) . '/../src/phprpc/phprpc_client.php';
$client = new PHPRPC_Client();
$client->setProxy(NULL);
$client->useService($url);
$client->setKeyLength(1000);
$client->setEncryptMode(3);
$client->setCharset('UTF-8');
$client->setTimeout(10);
var_dump($client->response(json_encode($params)));

调用链,是:客户端 -> PhalApi接口(HTTP协议,这里作为RPC的客户端,在这放置上面代码) -> PhalApi接口(PHPRPC接口)
 
问题是,你这里应该是存在二次调用。需要把你完整的整套代码贴出来。如果有问题,可以把报错信息详细贴一下。

symface

赞同来自:

屏幕快照_2019-04-04_21.45_.52_.png


屏幕快照_2019-04-04_21.46_.22_.png

 

dogstar - PhalApi创始人

赞同来自:

错误信息,请尽量贴下文字版本,方便复制和搜索。
 
看上面的错误提示,其实原因非常简单。因为在命名空间下,如果需要使用其他类,需要在类前面加反斜杠,表示根空间,而不是当前命名空间。
 
因为PHPRPC_Client类不在你当前命名空间,所以要这样写:

$client = new \PHPRPC_Client();  // 前面加反斜杠
 
这是一个很基本问题,与RPC完全无关的,请参考:http://docs.phalapi.net/#/v2.0/autoload.
 
再次温馨提示:
1、代码和错误,请尽量贴文字
2、出错时,注意看最后的错误信息
3、基本的PSR-4规范要熟悉,要熟悉命名空间的使用

symface

赞同来自:

public function getRpcData() { 
      require_once dirname(dirname(API_ROOT)) . '/vendor/phalapi/phprpc/src/phprpc/phprpc_client.php'; 
      $url = "http://dev.phalapi.net/phprpc_ ... 3B%3B 
      $client = new \PHPRPC_Client(); 
      $client->setProxy(NULL); 
      $client->useService($url); 
      $client->setKeyLength(1000); 
      $client->setEncryptMode(3); 
      $client->setCharset('UTF-8'); 
      $client->setTimeout(10); 
      var_dump($client->response());
 }

上面代码可以了,命名空间问题是小白最犯晕的错误,感谢指导 ^_^ 

要回复问题请先登录注册