共计 1924 个字符,预计需要花费 5 分钟才能阅读完成。
提醒:本文最后更新于2021-05-19 22:40,文中所关联的信息可能已发生改变,请知悉!
请求基础方法
private function request($url, $data = [], $method = 'get', $options = [], $returnArray = true) {
$curl = curl_init(); // 启动一个CURL会话
// is_array($data) && $data = http_build_query($data);
$method = strtoupper($method);
if ($method == 'GET') {
is_array($data) && $data = http_build_query($data);
$url .= stripos($url, '?') !== false ? '&' : '?';
$url .= $data;
} else {
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
}
unset($options[CURLOPT_URL], $options[CURLOPT_POST], $options[CURLOPT_POSTFIELDS]); //防止错误覆盖导致相关问题
$_options = [
CURLOPT_URL => $url,// 要访问的地址
CURLOPT_SSL_VERIFYPEER => 0,// 对认证证书来源的检查
CURLOPT_SSL_VERIFYHOST => 0,// 从证书中检查SSL加密算法是否存在
CURLOPT_FOLLOWLOCATION => 1,// 使用自动跳转
// CURLOPT_FOLLOWLOCATION => 0,// 使用自动跳转
CURLOPT_AUTOREFERER => 1,// 自动设置Referer
CURLOPT_TIMEOUT => 10,// 设置超时限制防止死循环
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',// 模拟用户使用的浏览器
CURLOPT_HEADER => 0, //不输出响应头
CURLOPT_CUSTOMREQUEST => $method, //请求方式
CURLOPT_RETURNTRANSFER => 1, //获取的信息以文件流的形式返回
];
$options = ($_options + $options);
curl_setopt_array($curl, $options);
$return = curl_exec($curl); // 执行操作
$resinfo = curl_getinfo($curl);
//关闭URL请求
curl_close($curl);
if ($resinfo[http_code] != 200) {
var_dump($data);
var_dump($resinfo);
var_export($return);
exit;
// return $return;
}
if (true === $returnArray) {
$return = json_decode($return, true);
}
return $return;
}
调用时
$options = [
CURLOPT_HTTPHEADER => $header,
CURLOPT_SSLCERTTYPE => 'PEM', // PHP的 CURL 只支持 PEM 方式
CURLOPT_SSLCERT => 'cert.pem文件路径',
CURLOPT_SSLCERTPASSWD => '证书密码',
CURLOPT_SSLKEYTYPE => 'PEM', // PHP的 CURL 只支持 PEM 方式
CURLOPT_SSLKEY => 'private.pem 文件路径',
];
$this->request('url','json字符串', 'POST', $options);
由于php的curl只支持pem格式、der、eng格式,而之前生成的是p12的格式,所以需要转换一下 p12 pfx 证书 转换命令
PKCS#12 到 PEM 的转换
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
验证
openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem
pfx 到 PEM 的转换
openssl pkcs12 -nocerts -nodes -in cert.pfx -out private.pem
验证
openssl pkcs12 -clcerts -nokeys -in cert.pfx -out cert.pem
正文完