Yii2通过curl调用json-rpc接口
Yii2可以通过json-rpc为前端提供接口数据,通常情况睛会使用异步的形式调用接口,有时也会使用curl调用接口数据。
一、异步调用json-rpc接口
$.ajax({
type: 'POST',
url: "http://localhost/index?r=test",
xhrFields: {withCredentials: true},
data: JSON.stringify([{
jsonrpc: "2.0",
method: "order-list",
params: {id: 3},
id: "1"
}]),
success: function(res){
console.log(res); },
dataType: "json",
contentType: "application/json-rpc",
error: function(){}
});
分析:json-rpc异步请求接口与普通的ajax异步请求相比,主要在于其设置了请求的content-type,传递的参数中包含了几个字段,jsonrpc method params id,知道了这些,我们通过设置curl的选项与参数,来模拟jsonrpc请求。
二、crul请求josnrpc接口
#请求的url
$url = 'http://localhost/index.php?r=test; //参数是为了防止缓存
#请求参数,如果想一次调用多个接口,data设置成二维数据即可
/*$data1 = [
[
'jsonrpc' => '2.0',
'method' => 'test1',
'id' => 0,
'params' => ['id' => '3']
],
[
'jsonrpc' => '2.0',
'method' => 'test2',
'id' => 0,
'params' => ['id' => '3']
],
];*/
$data = [
'jsonrpc' => '2.0',
'method' => 'test1',
'id' => 0,
'params' => ['id' => '3']
];
#curl初始化
$ch = curl_init();
#请求参数设置
$options = array(
CURLOPT_URL => $url,
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0",
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HTTPHEADER => Array("Content-Type: application/json-rpc")
);
curl_setopt_array($ch, $options);
#JSON数据
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
#发送请求并接收返回信息
$html=curl_exec($ch);
#获取请求的详细信息 用于调试,可以没有
$info = curl_getinfo($ch); curl_close($ch);
#打印返回数据
var_dump($html);die;
Yii2通过curl调用json-rpc接口的更多相关文章
- rpc接口调用以太坊智能合约
rpc接口调用以太坊智能合约 传送门: 柏链项目学院 在以太坊摸爬滚打有些日子了,也遇到了各种各样的问题.这几天主要研究了一下如何通过rpc接口编译.部署和调用合约.也遇到了一些困难和问题,下面将 ...
- 測试JSON RPC远程调用(JSONclient)
#include <string> #include <iostream> #include <curl/curl.h> /* 标题:JSonclient Auth ...
- python调用RPC接口
要调用RPC接口,python提供了一个框架grpc,这是google开源的 rpc相关文档: https://grpc.io/docs/tutorials/basic/python.html 需要安 ...
- asp.net 模拟CURL调用微信公共平台API 上传下载多媒体文件接口
FormItem类 public class FormItem { public string Name { get; set; } public ParamType ParamType { get; ...
- 上有传参下传json的接口调用
1.优化Myrequest import requests from conf.setting import log class MyRequest(): @staticmethod def post ...
- atitit.基于http json api 接口设计 最佳实践 总结o7
atitit.基于http json api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...
- Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据
当我们需要在控制层调用相同的封装函数时,写多次相同的函数,显得代码十分的拉杂,不精简: TP框架有一个很好的机制,可以再Common定义一个function.php函数,当我们在控制层调用的时候直接调 ...
- 程序员的自我救赎---11.1:RPC接口使用规范
<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...
- php curl请求和获取接口数据
curl请求和获取接口数据 class ToolModel{ /** * [http 调用接口函数] * @Author GeorgeHao * @param string $url [接口地址] * ...
随机推荐
- ThinkPHP5远程代码执行高危漏洞(附:升级修复解决方法)
漏洞描述 由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell. 漏洞评级 严重 影响版本 ThinkPHP 5 ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器出现no compatible source was found for this media问题的解决
背景分析 EasyDSS流媒体解决方案总体可划分成三个部分:前端视频源设备(PC.手机.摄像机)流媒体数据获取并即时回传.流媒体服务器端直播和录像与回放.客户端直播播放与录像检索回放.前端推流我们使用 ...
- jmockit使用总结-MockUp重点介绍
公司对开发人员的单元测试要求比较高,要求分支覆盖率.行覆盖率等要达到60%以上等等.项目中已经集成了jmockit这个功能强大的mock框架,学会使用这个框架势在必行.从第一次写一点不会,到完全可以应 ...
- Kubernetes 使用 Weave Scope 监控集群(十七)
目录 一.安装 二.使用 Scope 2.1.拓扑结构 2.2.在线操作 2.3.强大的搜索功能 创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所 ...
- 微信多开简单实现 WeXinMoreOpen.bat
新建一个 WeXinMoreOpen.bat 文件,内容如下 @echo off D: cd "D:\Program Files (x86)\Tencent\WeChat" sta ...
- python数据分析1
1 数据分析三要素 从下图可以清晰看出 感觉不怎么方便把图放上去,如果需要原图的私信我吧. 2 所谓修炼指南 (1)从思维到工具再到实践 (2)只有把只是抓换为自己的语言,才真正编程我们自己的东西 3 ...
- zabbix 后台数据库清除数据
alerts 表 problem 表 escalations 表 events 表 event_recovery表 对 这些表进行清除 防止不停发送邮件 -- alerts table rebuil ...
- PHP匹配中文,匹配车牌号
/** * 车牌号 * 字母全部大写 * @param $str * @return string */ public static function checkCar($str) { $patter ...
- Fineui alert去掉关闭按钮,去掉X
参考:http://fineui.com/bbs/forum.php?mod=viewthread&tid=7455&highlight=alert http:// ...
- Node.js 开发指南-读书笔记
1. Node.js 使用了单 线程.非阻塞的事件编程模式 Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计.对于高并发的解决方 案,传统的架构是多线程模型,也就是为每个业务逻辑 ...