修改php脚本,使其在cURL中具有JSON上载的POST请求

修改php脚本,使其在cURL中具有JSON上载的POST请求,php,json,curl,Php,Json,Curl,我有一个现有的PHP脚本,它基本上连接到不同服务器上的两个数据库,并在每个数据库上执行一些MySQL查询。最终结果存储在数据数组中,该数组用于将所述结果写入JSON文件 所有这些都非常有效。数据被正确地插入到mysql表中,JSON文件正是它应该采用的方式 但是,我需要在我的脚本末尾添加一个块,该块向我们的一个附属API发出POST请求,并将信息上传到那里。我们目前正在手动将此JSON文件上载到api实例,但我们现在有了用于POST请求的服务器的配置数据,因此当运行此脚本时,它会自动发送数据,而

我有一个现有的PHP脚本,它基本上连接到不同服务器上的两个数据库,并在每个数据库上执行一些MySQL查询。最终结果存储在数据数组中,该数组用于将所述结果写入JSON文件

所有这些都非常有效。数据被正确地插入到mysql表中,JSON文件正是它应该采用的方式

但是,我需要在我的脚本末尾添加一个块,该块向我们的一个附属API发出POST请求,并将信息上传到那里。我们目前正在手动将此JSON文件上载到api实例,但我们现在有了用于POST请求的服务器的配置数据,因此当运行此脚本时,它会自动发送数据,而不是我们必须手动更新它

最重要的是我不确定该怎么做。我已经开始编写这方面的代码,但是我不熟悉cURL,所以我不知道在php中构造它的最佳方法

下面是附属公司在cURL命令行语法中给我的一个示例:

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);