分享web开发知识

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

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

curl请求/签名

发布时间:2023-09-06 01:47责任编辑:赖小花关键词:url

签名规则:

第一步,

◆ 参数名ASCII码从小到大排序(字典序);

◆ 验证调用返回或主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。

第二步,

在stringA最后拼接上app_secret得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,得到sign

代码:

function make_sign($data, $Secret) {

?????ksort($data);
$kv_arr = array();
?????foreach ($data as $key => $val) {
?????????if ($key == "sign" || $val == ‘‘) {
?????continue;
??}
?????????array_push($kv_arr, $key . ‘=‘ . $val);
?????}

$md5_string = implode(‘&‘, $kv_arr);
?????$key_str = $md5_string . ‘&key=‘ . $Secret;

?????return strtolower(md5($key_str));
?}

接收json参数请求:
$req_param = json_decode(file_get_contents(‘php://input‘), true);

发送post json数据请求:
function curlJson($url, $params=array())
{
?
??$query = json_encode($params);
??
??$header = array(
???????‘Content-Type: application/json‘,
?‘Content-Length: ‘ . strlen($query)
??);
??
??$bin = fetch_curl($url,array(
???????CURLOPT_POST => true,
???????CURLOPT_POSTFIELDS => $query, //注意CURL无法转换数组成为name[]=value&这种格式
???????CURLOPT_TIMEOUT => 60,
???????CURLOPT_HTTPHEADER => $header,
??????), $http_code);
???return $bin;
}

/**
* @static
* 获取一个URL地址返回的内容
* @param string $url
* @param array $other_curl_opt 设置CURL选项
* @return mixed 成功则返回string,否则返回false
*/
function fetch_curl($url, $other_curl_opt = array(), &$http_code = 0)
{
???$curl_opt = array(
???????CURLOPT_URL => $url,
???????CURLOPT_AUTOREFERER => true, //自动添加referer链接
???????CURLOPT_RETURNTRANSFER => true, //true: curl_exec赋值方式,false:curl_exec直接输出结果
???????CURLOPT_FOLLOWLOCATION => false, //自动跟踪301,302跳转
???????//CURLOPT_HTTPGET => TRUE, //默认为GET,无需设置
???????//CURLOPT_POST => TRUE,
???????//CURLOPT_POSTFIELDS => ‘username=abc&passwd=bcd‘,//也可以为数组array(‘username‘=>‘abc‘,‘passwd‘=>‘bcd‘)
???????CURLOPT_CONNECTTIMEOUT => 15, //秒
???????CURLOPT_USERAGENT => self::HTTP_AGENT,
???????//CURLOPT_COOKIE => ‘‘,
???);
???
???if($other_curl_opt)
???foreach ($other_curl_opt as $key => $val)
???????$curl_opt[$key] = $val;
???
???$ch = curl_init();
???curl_setopt_array($ch, $curl_opt);
???$contents = curl_exec($ch);
???$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
???curl_close($ch);
???
???return $contents;
}

function curlPost($url, $params=array())
??{
??????
??????$query = http_build_query($params);
??????$header = array(
??????‘Content-Type: application/x-www-form-urlencoded‘,
??????‘Content-Length: ‘ . strlen($query)
??????);

??????$bin = Net::fetch($url,array(
??????????CURLOPT_POST => true,
??????????CURLOPT_POSTFIELDS => $query, //注意CURL无法转换数组成为name[]=value&这种格式
??????????CURLOPT_TIMEOUT => 60,
??????????
??????????), $http_code);
??????return $bin;
??}

function curlhttps($url, $params=array(),$method=‘GET‘)
??{
??????$header = array(
??????‘Content-Type: application/x-www-form-urlencoded;charset=utf-8‘,
??????);
??????$curl = curl_init(); // 启动一个CURL会话 ?
???curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 ?
???curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查 ?
???curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在 ?
???//curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER[‘HTTP_USER_AGENT‘]); // 模拟用户使用的浏览器 ?
???curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 ?
???curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer ?
???if($method==‘POST‘){ ?
???????curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 ?
???????curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
???????if ($params){ ?
??????????$query = http_build_query($params);
???????????curl_setopt($curl, CURLOPT_POSTFIELDS, $query); // Post提交的数据包 ?
???????}
???} ?
???curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 ?
???curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 ?
???curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 ?
???$tmpInfo = curl_exec($curl); // 执行操作 ?
???curl_close($curl); // 关闭CURL会话 ?
???return $tmpInfo; // 返回数据 ?
??}

function curlheaderhttps($url, $params=array(),$method=‘GET‘)
??{
??????$header[] = ‘Content-Type: multipart/form-data;charset=utf-8‘;
??????foreach ($params as $k=>$val){
?????????$header[] = "$k:$val";
??????}
??????
??????$curl = curl_init(); // 启动一个CURL会话 ?
???curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 ?
???curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查 ?
???curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在 ?
???//curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER[‘HTTP_USER_AGENT‘]); // 模拟用户使用的浏览器 ?
???curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 ?
???curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer ?
???if($method==‘POST‘){ ?
???????curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 ?
???????curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
???????if ($params){ ?
??????????$query = http_build_query($params);
???????????curl_setopt($curl, CURLOPT_POSTFIELDS, $query); // Post提交的数据包 ?
???????}
???} ?
???curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 ?
???curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 ?
???curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 ?
???$tmpInfo = curl_exec($curl); // 执行操作 ?
???curl_close($curl); // 关闭CURL会话 ?
???return $tmpInfo; // 返回数据 ?
??}

function curlFilePost($url, $header=array(),$fp,$size)
??{
??????
?????
??????if(!$fp)exit(‘文件为空‘);
??????if(!$header){
??????$header = array(
?????????‘Content-Type: application/x-www-form-urlencoded‘,
?????????‘Content-Length: ‘ . strlen($query)
??????);
??????}
??????
??????$bin = Net::fetch($url,array(
??????????CURLOPT_POST => true,
??????????CURLOPT_TIMEOUT => 60,
??????????CURLOPT_UPLOAD => 1,
??????????CURLOPT_INFILE => $fp,
??????????CURLOPT_INFILESIZE => $size,
??????????CURLOPT_HTTPHEADER => $header,
??????????), $http_code);
??????return $bin;
??}


curl请求/签名

原文地址:https://www.cnblogs.com/nuomi/p/8681453.html

知识推荐

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