分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

php中使用curl来post一段json数据

发布时间:2023-09-06 01:44责任编辑:董明明关键词:jsurljson

 场景:在调用第三方接口时经常需要使用到curl进行数据交互,在初次使用时遇到一些小问题,记录下来随时查阅。

封装curl相关方法便于使用,方法如下:

/** * @param $url * @param string $error * @param array|string $post * @param int $timeout * @param null $ref * @param string $ua * @param $contentType * @return bool|mixed */function xcurl($url, &$error = "", $post = array(), $timeout = 5, $ref = null, $ua = "Mozilla/5.0 (X11; Linux x86_64; rv:2.2a1pre) Gecko/20110324 Firefox/4.2a1pre", $contentType) { ???$ch ??????????= curl_init(); ???if(!empty($ref)) { ???????curl_setopt($ch, CURLOPT_REFERER, $ref); ???} ???curl_setopt($ch, CURLOPT_AUTOREFERER, true); ???curl_setopt($ch, CURLOPT_URL, $url); ???curl_setopt($ch, CURLOPT_HEADER, 0); ???curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); ???curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ???curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); ???curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); ???if (false !== stripos($url, "https://")) { ???????????????# https处理,不校验相关证书 ???????curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); ???????curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); ???} ???if(!empty($ua)) { ???????curl_setopt($ch, CURLOPT_USERAGENT, $ua); ???} ???if(count($post) > 0){ ???????curl_setopt($ch, CURLOPT_POST, 1); ???????curl_setopt($ch, CURLOPT_POSTFIELDS, $post); ???} ???if (‘json‘ == $contentType) { ???????curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Content-Type: application/json‘, ‘Content-Length: ‘ . strlen($post))); ???} ???$output ??????= curl_exec($ch); ???if ($output === false) { ???????$error ???= curl_error($ch); ???????curl_close($ch); ???????return false; ???} else { ???????curl_close($ch); ???????return $output; ???}}

调用如下:

<?$url = ‘localhost/php/server.php‘;$error = ‘‘;$post = [ ???‘hello‘ => ‘world‘, ???‘lang‘ => ‘php‘,];$post = json_encode($post);$result = xcurl($url,$error, $post, 5, null, ‘Mozilla/5.0 (X11; Linux x86_64; rv:2.2a1pre) Gecko/20110324 Firefox/4.2a1pre‘, ‘json‘);var_dump($result);

本地服务接受参数时遇到了问题,无论$_POST还是$_REQUEST都无法获取curl客户端发送的json,所以改用file_get_contents来获取,代码:

print_r(file_get_contents(‘php://input‘));

最终请求curl.php获取到结果为:

/code/php/curl.php:19:string

 ‘{"hello":"world","lang":"php"}‘ (length=30)

php中使用curl来post一段json数据

原文地址:https://www.cnblogs.com/jixingke/p/8486158.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved