用php访问json api

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用php访问json api相关的知识,希望对你有一定的参考价值。

我正在努力学习如何与json api进行交互。在文档中,他们给我一个卷曲的例子:

如果我将它作为命令运行它工作正常,以json格式给我我的数据。

我以为我是在正确的轨道:PHP + curl, HTTP POST sample code?

但显然不是因为我无法弄清楚如何处理这个命令的-H部分。

curl -H "APIKey:My:ApI;key;" -H "Content-Type:.../json" "https://urlofapp.com/API/GetTransaction" -d "{ 'CustomerID':'12345','EndDate':'2018-12-31','StartDate':'2018-01-01'}" > test.json

试图将结果变成一个数组,我可以总结并显示他们今年的总订单。

从我上面提供的链接开始,我试图从这开始:

// set post fields
$post = [
'CustomerID' => 12345,
'StartDate' => 2018-01-01,
'EndDate'   => 2018-12-31,
];

$ch = curl_init('https://urlofapp.com/API/GetTransaction');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

// execute!
$response = curl_exec($ch);

// close the connection, release resources used
curl_close($ch);

// do anything you want with your response
var_dump($response);
答案

-h命令引用标头。

试试下面的代码,

// Generated by curl-to-php: http://incarnate.github.io/curl-to-php/
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://urlofapp.com/API/GetTransaction');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{ 'CustomerID':'12345','EndDate':'2018-12-31','StartDate':'2018-01-01'}");
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = 'Apikey: My:ApI;key;';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);

我用下面的命令将curl命令转换为PHP脚本,

https://incarnate.github.io/curl-to-php/

希望它会有用。

另一答案

直接处理卷曲通常会导致痛苦。有许多库可以帮助调用更简单的调用。

以下是一些:

以上是关于用php访问json api的主要内容,如果未能解决你的问题,请参考以下文章

php header在浏览器上打印完整的html代码

用php访问json post数据

PHP必用代码片段

GraphQL 片段 JSON 格式

PHP 中的 REST API 输出到 JSON 文件扩展名

微信小程序json数据如何处理?