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 [接口地址] * ...
随机推荐
- 锐捷交换机如何配置远程管理地址(telnet)
基本命令如下: hostname(config)#username admin password 123456 ------>telnet 登录账号为admin密码为123456 hostna ...
- CSS布局:sticky定位
stick定位一如其名:它随“正常”文档流而动,直到规定位置,尔后“粘”在那里:或者,当它发现自己可以跟随“正常”文档流而脱离sticky位置时,就果断离开从而加入文档流. 代码与效果如下: < ...
- html中测试div、ul和li、table排列多个块
前面有三篇博文测试了这三种方式,一.相关博文:LODOP问答部分链接.该文用的是div定位,用的是所有小div相对于大div进行定位,大的div设置relative定位,小的设置absolute相对于 ...
- Xamarin Assets文件读取
在Assets文件夹中添加nlog.config文件,在属性中将Build Action设置为AndroidAsset var steam = Assets.Open("nlog.confi ...
- C#使用cmd运行命令并返回控制台输出信息
public static string RunCmd(string cmd){ cmd = cmd.Trim().TrimEnd('&') + "&exit";/ ...
- jmeter—建立测试计划
一个测试计划描述了一系列 Jmeter 运行时要执行的步骤.一个完整的测试计划包含 一个或者多个线程组,逻 辑控制,取样发生控制,监听器,定时器,断言和配置元件. 一. 建立测试计划 在这一部分,你将 ...
- Docker Compose 部署Nginx服务实现负载均衡
Compose简介: Compose是Docker容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose,不再需要使用shell脚本来启动容器.Comp ...
- Linux内核参数详解
所谓Linux服务器内核参数优化(适合Apache.Nginx.Squid等多种web应用,特殊的业务有可能需要做略微调整),主要是指在Linux系统中针对业务服务应用而进行的系统内核参数调整,优化并 ...
- 【linux】查看端口占用情况
netstat -nlp | grep "端口号"
- Selenium+java - 操作滚动条
前言 在写脚本时,总会遇到一种情况,就是当滚动拉倒最下面了,表单或者下拉框.按钮这些元素未在当前页面展示,而webdriver提供的方法都是操作当前页面可见的元素,这时我们使用JavaScript操作 ...