php中 curl模拟post 发送json并接收json

2025-04-07 07:06:22

1、客户端curl模拟提交代码.functionhttp($url,$data= NULL,$json= false){ $curl= cur造婷用痃l_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) {   returnarray('errorno'=> false,'errmsg'=>$errorno); } curl_close($curl); returnjson_decode($res, true);}参数说明:$url: 服务器接收处理url$data: 数组形式的post数据$json: 是否以json方式提交(1:是, 0:否)

2、服务器端获取post数据代码:print_r($_POST);最后获取到的数据是空值.

3、上网搜索了一下发现PHP默认只识别application/x-www.form-urlencoded标准的数据类型,修改头信息也没有结果…只能通过以下方式获得数据//第一种方法$post= $GLOBALS[‘HTTP_RAW_POST_DATA’];//第二种方法$post= file_get_contents(“php://input”);最后修改后,数据才能接收到.

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
猜你喜欢