修改php脚本,使其在cURL中具有JSON上载的POST请求
我有一个现有的PHP脚本,它基本上连接到不同服务器上的两个数据库,并在每个数据库上执行一些MySQL查询。最终结果存储在数据数组中,该数组用于将所述结果写入JSON文件 所有这些都非常有效。数据被正确地插入到mysql表中,JSON文件正是它应该采用的方式 但是,我需要在我的脚本末尾添加一个块,该块向我们的一个附属API发出POST请求,并将信息上传到那里。我们目前正在手动将此JSON文件上载到api实例,但我们现在有了用于POST请求的服务器的配置数据,因此当运行此脚本时,它会自动发送数据,而不是我们必须手动更新它 最重要的是我不确定该怎么做。我已经开始编写这方面的代码,但是我不熟悉cURL,所以我不知道在php中构造它的最佳方法 下面是附属公司在cURL命令行语法中给我的一个示例:修改php脚本,使其在cURL中具有JSON上载的POST请求,php,json,curl,Php,Json,Curl,我有一个现有的PHP脚本,它基本上连接到不同服务器上的两个数据库,并在每个数据库上执行一些MySQL查询。最终结果存储在数据数组中,该数组用于将所述结果写入JSON文件 所有这些都非常有效。数据被正确地插入到mysql表中,JSON文件正是它应该采用的方式 但是,我需要在我的脚本末尾添加一个块,该块向我们的一个附属API发出POST请求,并将信息上传到那里。我们目前正在手动将此JSON文件上载到api实例,但我们现在有了用于POST请求的服务器的配置数据,因此当运行此脚本时,它会自动发送数据,而
curl \
-H "Authorization: Token AUTH_TOKEN" \
-H "Content-Type: CONTENT_TYPE" \
-X POST \
-d '[{"email": "jason@yourcompany.com", "date": "8/16/2016", "calls": "3"}]'
\
https://endpoint/api/v1/data/DATA_TYPE/
我有我的身份验证令牌,我的端点URL,我的内容类型是JSON,可以在下面的代码中看到。另外,我有一个数组,而不是上面主体的示例
下面是我代码中受影响的部分:
//new array specifically for the final JSON file
$content2 = [];
//creating array for new fetch since it now has the updated extension IDs
while ($d2 = mysqli_fetch_array($data2, MYSQLI_ASSOC)) {
// Store the current row
$content2[] = $d2;
}
// Store it all into our final JSON file
file_put_contents('ambitionLog.json', json_encode($content2, JSON_PRETTY_PRINT ));
//Beginning code to upload to Ambition API via POST
$url = 'endpoint here';
//Initiate CURL
$ch = curl_init($url);
//JSON data
$jsonDataEncodeUpload = json_encode($content2, JSON_PRETTY_PRINT);
//POST via CURL
curl_setopt($ch, CURLOPT_POST, 1);
//attach JSON to post fields
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncodeUpload);
//set content type
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
//execuate request
$postResult = curl_exec($ch);
所以,正如我所说,关于文件或数据的任何内容都不需要更改,我只需要让这个cURL部分获取正在写入JSON文件的现有数组,并通过post将其上传到API。我只需要帮助使curl的php语法与命令行示例匹配
谢谢您的帮助。您是否尝试过使用文件获取内容()
我在stackoverflow上找到了答案您是否尝试过使用文件获取内容()
我在stackoverflow上找到了答案,这里是一个代码示例。检查$err可能会有帮助
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST('data'));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:application/json']);
$result = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);
curl_close($ch);
下面是一个代码示例。检查$err可能会有帮助
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST('data'));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:application/json']);
$result = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);
curl_close($ch);