comcn 发表于 2022-8-19 16:22

php请求接口代码问题

本帖最后由 comcn 于 2022-8-26 14:46 编辑

需要请求百度的一个api,文档地址:https://dev2.baidu.com/content?sceneType=0&pageId=100732&nodeId=595&subhead=

这个接口需要先请求access接口,获取accesstoken,这个我已经拿到了

我借鉴的是apipost工具提供的代码,直接在工具请求获取的是json格式,但是代码运行后获取的是object

var_dump( is_object($response)); //得出结果是:bool(true)



apipost提供的代码:
<?php
include('vendor/rmccue/requests/library/Requests.php');
Requests::register_autoloader();
$headers = array(
    'User-Agent' => 'Apipost client Runtime/+https://www.apipost.cn/',
    'Content-Type' => 'application/json'
);
$data = '{ "header": { "authorityType": 5, "userName": "123", "accessToken": "JZCI6IjQ5NjAzNDU5NjU5NTg1NjE3OTQiLCJleHAiOjE2NjA5NjE3NjUsImp0aSI6IjY3Njc5" }, "body": { "reportType": 999241, "userIds": [], "timeUnit": "DAY", "startDate": "2022-08-01", "endDate": "2022-08-18", "columns": [], "startRow": null, "rowCount": null, "needSum": null } }';
$response = Requests::post('https://api.baidu.com/json/sms/service/OpenApiReportService/getReportData', $headers, $data);


请问如何输出json格式呢,我使用json_encode()仍然不行

comcn 发表于 2022-8-19 16:25

本帖最后由 comcn 于 2022-8-19 16:26 编辑

上面代码实际是无法运行的,我改成了下面这个,大佬可以在本地试下,拿不到数据无所谓,可以在浏览器输出json格式就行
下载地址:https://2xb.lanzoub.com/iZ7YM09u9ygj


<?php
require_once'./rmccue/requests/src/Autoload.php';
WpOrg\Requests\Autoload::register();

$headers = array(
   "Accept-Encoding"=> "gzip, deflate",
    'Content-Type' => 'application/json',
   "Accept"=> "application/json",
);
$data = '{ "header":{ "authorityType": 5, "userName": "123", "accessToken": "c5MjEzNjY2NzA2MTgzODgifQ.x1lT2AtsvjNx1i3gqdrcqiQ1L6Xtibdl_yKTFFiZGDuYaOn3BJ8WFtYiHQKvABIs" }, "body":{ "reportType": 999241, "userIds": [], "timeUnit": "DAY", "startDate": "2022-07-01", "endDate": "2022-08-18", "columns": [], "startRow": null, "rowCount": null, "needSum": null } }';
$response = WpOrg\Requests\Requests::post('https://api.baidu.com/json/sms/service/OpenApiReportService/getReportData', $headers, $data);

归隐小赵 发表于 2022-8-19 16:29

看一下Requests::post这个类,返回的有哪些方法,通过方法获取返回值

comcn 发表于 2022-8-19 16:42

归隐小赵 发表于 2022-8-19 16:29
看一下Requests::post这个类,返回的有哪些方法,通过方法获取返回值
找不到,返回的格式不是数组,对象转数组也用不了

88868 发表于 2022-8-19 16:44

comcn 发表于 2022-8-19 16:47

88868 发表于 2022-8-19 16:44
直接return json();就可以了。我用你的数据测试了

我直接建的php,没有使用tp框架,直接json()报错,在tp框架可以,但也不显示json格式,因为我Chrome安装了json格式化插件,json格式很容易看出来。

错误信息:
Fatal error: Uncaught Error: Call to undefined function json() in D:\phpstudy_pro\WWW\zi.com\api.php

归隐小赵 发表于 2022-8-19 16:48

comcn 发表于 2022-8-19 16:42
找不到,返回的格式不是数组,对象转数组也用不了

返回的是个对象,你直接看这个对象包含了哪些方法,肯定会有一个方法,或者公共参数,是可以获取返回值的,你去看他的对象实现,都是对象了,你还在这纠结数组-_-||

88868 发表于 2022-8-19 16:48

88868 发表于 2022-8-19 16:49

comcn 发表于 2022-8-19 16:50

归隐小赵 发表于 2022-8-19 16:48
返回的是个对象,你直接看这个对象包含了哪些方法,肯定会有一个方法,或者公共参数,是可以获取返回值的 ...

关键是找不到文件,引用的是开源类库,https://hub.fastgit.xyz/WordPress/Requests

代码看不太懂
页: [1] 2 3
查看完整版本: php请求接口代码问题