dua27031 2018-03-26 13:46
浏览 58
已采纳

php curl将有效负载作为JSON正文发送

I'm POSTing to an API that expects a json array called "updateRecord" in the body. I've tried a hundred different methods of getting the data across, but each method fails except for me literally writing the array as escaped text inside the CURLOPT_POSTFIELDS option.

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://url.com/update");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"updateRecord\":[{\"fielda\":\"77777\",
\"fieldb\":\"11.77\",\"fieldc\":\"12\",\"fieldd\":\"12\",\"fielde\":\"99\",
\"fieldf\":\"01\",\"fieldg\":\"TEST\",
\"fieldh\":\"Y\",\"fieldi\":\"Approved\"}]}");
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = "Authorization: Basic XXXXXXXXXXXXXXXXXX";
$headers[] = "Cache-Control: no-cache";
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close ($ch);

echo $result;

For static test data to prove the API works, this is fine, but I am lost on how to take a pre-existing array in PHP and convert it into a format that will work here, like:

curl_setopt($ch, CURLOPT_POSTFIELDS, $arr);

  • 写回答

1条回答 默认 最新

  • doujia3441 2018-03-26 13:51
    关注

    you could use json_encode() to serialize your array:

    $arr = array('updateRecord' => array(
        array(
          'fielda' => '77777',
          'fieldb' => '11.77',
          'fieldc' => '12',
          'fieldd' => '12',
          'fielde' => '99',
          'fieldf' => '01',
          'fieldg' => 'TEST',
          'fieldh' => 'Y',
          'fieldi' => 'Approved',
        ),
      ),
    );
    
    $serial = json_encode($arr) ;
    curl_setopt($ch, CURLOPT_POSTFIELDS, $serial);
    

    $serial will look like :

    {"updateRecord":[{"fielda":"77777","fieldb":"11.77","fieldc":"12","fieldd":"12","fielde":"99","fieldf":"01","fieldg":"TEST","fieldh":"Y","fieldi":"Approved"}]}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部