php curl post 接口采用$_POST数据得不到问题

本文介绍使用 PHP 的 cURL 扩展进行 HTTPS 请求的方法,包括设置 cURL 选项、发送 POST 数据等,并解决了 $_POST 获取不到数据的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 $curl = curl_init();
 //设置抓取的url
curl_setopt($curl, CURLOPT_URL, 'http://'.$host.'/demo/xx.php');   
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($curl,CURLOPT_AUTOREFERER,1);
curl_setopt($curl,CURLOPT_POST, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl,CURLOPT_POSTFIELDS, $data);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
        
 //执行命令

$result = curl_exec($curl);

如果$_POST获取不到数据,一定要将http改成https

问题解决

<?php //临时邮箱:https://mail.td/ function gettoken($email){ // 初始化 cURL $ch = curl_init(); // 设置 cURL 选项 curl_setopt($ch, CURLOPT_URL, "https://mail.td/zh/mail/".$email); // 设置请求的 URL curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将响应保存到变量而不是输出 curl_setopt($ch, CURLOPT_HEADER, true); // 包含头部信息 // 执行 cURL 请求 $response = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)) { echo 'Curl error: ' . curl_error($ch); } // 获取响应头部信息的长度 $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); // 分离头部信息和响应体 $header = substr($response, 0, $header_size); // 将头部信息转换为关联数组 $headerArray = []; // 解析头部信息为数组 $headers = explode("\r\n", $header); foreach ($headers as $headerLine) { $pos = strpos($headerLine, ':'); if ($pos !== false) { $key = substr($headerLine, 0, $pos); $value = trim(substr($headerLine, $pos + 1)); $headerArray[$key] = $value; } } $string = $headerArray['set-cookie']; // 使用正则表达式匹配目标字符串 $pattern = '/auth_token=([^;]+)/'; if (preg_match($pattern, $string, $matches)) { $extractedString = $matches[1]; return $extractedString; } // 关闭 cURL 资源 curl_close($ch); } // 第一个方法:获取随机邮箱并发送请求 function getRandomEmail() { // 生成随机的邮箱地址,这里使用一个简单的示例 $randomEmail = uniqid() . '@nqmo.com'; // 这里可以改为生成真实的随机邮箱 // 构建请求的 URL $url = 'https://mail.td/_next/data/Vo6ilNCStMVNBJtfMWiXR/zh/mail/' . urlencode($randomEmail) . '.json?name=' . urlencode($randomEmail); // 初始化 curl $ch = curl_init(); // 设置 curl 选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 执行请求并获取返回结果 $response = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)) { $error_message = curl_error($ch); echo "Error: $error_message"; } // 关闭 curl 资源 curl_close($ch); $res = json_decode($response); if(isset($res->__N_SSP)){ $arr = array( "code"=>0, "msg"=>"随机邮箱获取成功", "email"=>$randomEmail, ); return $arr; }else{ $arr = array( "code"=>1, "msg"=>"随机邮箱获取失败", "email"=>$res->__N_SSP, ); return $arr; } } // 第二个方法:接收邮箱参数并发送请求 function sendGetRequest($email) { // 构建请求的 URL $url = 'https://mail.td/api/api/v1/mailbox/' . urlencode($email); // 初始化 curl $ch = curl_init(); // 设置 curl 选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Authorization: bearer '.gettoken($email) )); // 执行请求并获取返回结果 $response = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)) { $error_message = curl_error($ch); echo "Error: $error_message"; } // 关闭 curl 资源 curl_close($ch); $arr = array( "email"=>$email, "content"=>json_decode($response), ); return $arr; } //根据id获取邮箱内容 function getEmailContent($email,$id){ // 构建请求的 URL $url = 'https://mail.td/api/api/v1/mailbox/' . urlencode($email)."/".$id; // 初始化 curl $ch = curl_init(); // 设置 curl 选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Authorization: bearer '.gettoken($email) )); // 执行请求并获取返回结果 $response = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)) { $error_message = curl_error($ch); echo "Error: $error_message"; } // 关闭 curl 资源 curl_close($ch); $arr = array( "id"=>$id, "email"=>$email, "content"=>json_decode($response), ); return $arr; } //$res = gettoken(); // $res = getEmailContent("liuqing@nqmo.com","20240712T051842-6261"); // echo json_encode($res); if(isset($_GET["act"])){ $act = $_GET["act"]; if($act=='getRandomEmail'){ $res = getRandomEmail(); }else if($act=='getEmailMsg'&&isset($_GET["email"])){ $res = sendGetRequest($_GET["email"]); }else if($act=='getEmailContent'&&isset($_GET["email"])&&isset($_GET["id"])){ $res = getEmailContent($_GET["email"],$_GET["id"]); }else{ $res = array( "code"=>1, "msg"=>"参数错误", ); } echo json_encode($res); }else{ $res = array( "code"=>1, "msg"=>"参数错误", ); echo json_encode($res); } ?> 以上代码转成delphi XE7 可以使用的版本,然后对应可用的 ssleay32.dll
最新发布
05-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值