Yii2通过curl调用json-rpc接口

摘要:
Yii2可以通过json-rpc为前端提供接口数据,通常情况睛会使用异步的形式调用接口,有时也会使用curl调用接口数据。r=test",xhrFields:{withCredentials:true},data:JSON.stringify,success:function{console.log;},dataType:"json",contentType:"application/json-rpc",error:function(){}});分析:json-rpc异步请求接口与普通的ajax异步请求相比,主要在于其设置了请求的content-type,传递的参数中包含了几个字段,jsonrpcmethodparamsid,知道了这些,我们通过设置curl的选项与参数,来模拟jsonrpc请求。

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接口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HashMap负载因子为什么是0.75ubuntu 14.04 安装docker,docker-compose下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Elasticsearch状态API接口排障总结

ES的Restful API,共四类API: 1. 检查集群、节点、索引等健康与否,以及获取其相应状态。 2. 管理集群、节点、索引及元数据 3. 执行CRUB操作(即:增删查改) 4. 执行高级操作,如:paging,filtering等。 ES API的访问接口: TCP:9200,并且ES是基于HTT...

Java进阶--List接口

List接口 我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢?接下来,我们一起学习Collection中的常用几个子类(java.util.List集合、java.util.Set集合)。 1.1 List接口介绍 java.util.List接口继承自Collection接口,是单列集合的一个...

Python接口测试入门

接口测试基础篇用几个简单的案例,带你轻松了解接口测试 首先了解一下接口测试的重要性: 接口测试有什么要求呢? 首先需要清晰的接口文档,标准如下: 接口名称 接口类型 输入参数 每个参数名; 每个参数类型; 每个参数业务含义; 每个是否可空; 每个字段长度(可选,一般需要提供,有严格要求的字段需特别注明); 输出参数 状态码; 提示信息; 每个参...

[Kong] basic-auth基本认证及ACL鉴权

目录 basic-auth 1. Route上启用插件 2. 创建一个Consumer 3. 为Consumer创建凭证 4. 验证凭证 ACL 用户鉴权 1. 在route上启用ACL鉴权插件 2. 关联comsumer Basic auth 与ACL 的总结 在上篇文章《key-auth实现对API请求的密钥认证》,简单学习了如何...

java面试题之----jdbc中使用的设计模式(桥接模式)

1.JDBC(JavaDatabase Connectivity) JDBC是以统一方式访问数据库的API. 它提供了独立于平台的数据库访问,也就是说,有了JDBC API,我们就不必为访问Oracle数据库专门写一个程序,为访问Sybase数据库又专门写一个程序等等,只需要用JDBC API写一个程序就够了,它可以向相应数据库发送SQL调用.JDBC是...

是时候扔掉 Postman 了,Apifox 不香吗!

  偶然间发现这款测试工具Apifox,暂时还没有想好该把它叫接口测试工具还是辅助开发工具。但是,给我感觉,就是很好用,而且后面还有很多开发的功能是我很期待的。 根据官方给出的简单描述,它能做的事就是: Apifox = Postman + Swagger + Mock + JMeter 一、Apifox 介绍 Apifox 是接口管理、开发、测试全流...