关于PHP中使用CURL系列函数实现JSON数据发送

最近,在练习项目中遇到对接其他服务端的接口,需要提交JSON数据与之进行交互对接的情况,由于,之前的接口对接,很多都是FORM-DATA的格式就可以了,所以,这次需要调整一下相关对接函数的HEADER中属性的设置,参考不少文章的设置方法,这里,也借鉴一下其中的一个案例代码做一下记录和说明:

function http($url, $data = NULL, $json = false)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    
    if (!empty($data)) {
     if($json && is_array($data)){
       $data = json_encode( $data );
      }
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    if ($json) { 
       // 发送JSON数据
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_HTTPHEADER,
      array(
        'Content-Type: application/json; charset=utf-8',
        'Content-Length:' . strlen($data)
			)
    );
      }
   }

   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   $res = curl_exec($curl);
   $errorno = curl_errno($curl);

   if ($errorno) {
    return array('errorno' => false, 'errmsg' => $errorno);
   }
   curl_close($curl);
  
    return json_decode($res, true);
 }

其中,比较关键的设置,是以下这两句话为:

curl_setopt($curl, CURLOPT_HTTPHEADER,
    array(
        'Content-Type: application/json; charset=utf-8',
        'Content-Length:' . strlen($data)
    )
); 

这边,简单学习了下CURLOPT_HTTPHEADER属性可以设置HTTP请求头部的格式,此处,需要根据需求调整为application/json,但是,后面那句话'Content-Length:' . strlen($data),是否一定需要,目前,我这边,也不是特别确定。也想通过对本次遇到问题的记录,后续可以加强对CURL这块的学习和认识,不仅仅可以解决遇到的功能实现问题,也能对相关知识的有更深层次的学习认识和了解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值