找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 38|回复: 0

[技巧分享] php curl自定义函数获取POST接口信息

[复制链接]
  • TA的每日心情
    奋斗
    6 天前
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    766680204
    发表于 6 天前 | 显示全部楼层 |阅读模式

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×
    php curl自定义函数获取POST接口信息
    1. <?php
    2. function curlRequest($url, $postData = [])
    3. {
    4.     // 初始化cURL会话
    5.     $ch = curl_init();

    6.     // 将表单数据转换为URL编码的查询字符串
    7.     $cookie = '';
    8.     // 设置cURL选项
    9.     $postDataString = http_build_query($postData);
    10.     curl_setopt($ch, CURLOPT_URL, $url);
    11.     curl_setopt($ch, CURLOPT_POST, true);
    12.     curl_setopt($ch, CURLOPT_POSTFIELDS, $postDataString);
    13.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    14.     // 设置请求头,如果需要动态设置Content-Length,可以计算$postDataString的长度
    15.     $headers = [
    16.         'Accept: application/json, text/plain, */*',
    17.         'Accept-Encoding: gzip, deflate, br',
    18.         'Accept-Language: zh-CN,zh;q=0.9',
    19.         'Content-Length: 0',
    20.     ];
    21.     if (!empty($cookie)) {
    22.         $headers[] = 'Cookie: ' . $cookie;
    23.     }
    24.     //var_dump($headers);exit;
    25.     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    26.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    27.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    28.     curl_setopt($ch, CURLOPT_COOKIEJAR, 'spcookie.txt'); // 存储Cookie的文件
    29.     curl_setopt($ch, CURLOPT_COOKIEFILE, 'spcookie.txt'); // 发送时读取Cookie的文件
    30.     // 执行cURL请求并获取响应
    31.     $response = curl_exec($ch);

    32.     // 检查cURL错误
    33.     if ($response === false) {
    34.         $error = curl_error($ch);
    35.         echo "cURL Error: {$error}";
    36.         curl_close($ch);
    37.         return null;
    38.     }

    39.     // 处理响应数据
    40.     $data = json_decode($response, true);

    41.     // 关闭cURL会话
    42.     curl_close($ch);

    43.     // 返回处理后的数据或原始响应(根据需要)
    44.     return $data;
    45. }
    46. // 要发送请求的URL
    47. $url = '';

    48. // 准备要发送的表单数据,作为关联数组
    49. $postData = [
    50.     'page' => 1, // 请求的页码,此处为第一页
    51.     'rows' => 18, // 每页欲显示的记录条数,这里设置为18条
    52. ];
    53. $responseData = curlRequest($url, $postData);

    54. // 现在你可以使用$responseData来处理返回的数据了
    55. if ($responseData !== null) {
    56.     $rows = $responseData["rows"];
    57.    
    58. }
    59. $i = 0;
    60. foreach ($rows as $row) {
    61.     $goodsid = $row['goodId'];
    62.     $url = '$goodsid; //获取多图片
    63.     $postData = [
    64.     'goodsId' => $goodsid, //商品id goodsId=249372724
    65. ];
    66.    $goodsMediasData = curlRequest($url, $postData);
    67.    echo $i++ . ' 商品id: ' . $row['goodId'] . ' 商品名称:' . $row['name'] . ' 商品货号:' . $row['goodsSn'] . ' 商品采购价:' . $row['factoryPrice'] ;
    68.    
    69. // 假设 $goodsMediasData 已经包含了你从某处获取的图片数据
    70. if ($goodsMediasData !== null && isset($goodsMediasData["rows"])) {
    71.     $Medrows = $goodsMediasData["rows"];
    72.    
    73.     // 指定下载图片的本地目录
    74.     $downloadDir = '';
    75.    
    76.     // 确保下载目录存在且可写
    77.     if (!is_dir($downloadDir) || !is_writable($downloadDir)) {
    78.         die('Download directory does not exist or is not writable.');
    79.     }
    80.    
    81.     foreach ($Medrows as $Medrow) {
    82.         // 获取图片 URL
    83.         $imgUrl = $Medrow["imgUrl"];
    84.         
    85.         // 从 URL 获取图片数据
    86.         $imgData = file_get_contents($imgUrl);
    87.         
    88.         // 检查是否成功获取图片数据
    89.         if ($imgData === FALSE) {
    90.             echo "Failed to download image from URL: " . $imgUrl . "\n";
    91.             continue;
    92.         }
    93.         
    94.         // 生成本地文件名(可以根据需要自定义)
    95.         $filename = basename($imgUrl);
    96.         $localFilePath = $downloadDir . $filename;
    97.         $imageUrl = '' . $filename;
    98.         // 将图片数据写入本地文件
    99.         //$result = file_put_contents($localFilePath, $imgData);
    100.         
    101.         // 检查是否成功写入文件
    102.         // if ($result === FALSE) {
    103.         //     echo "Failed to save image to file: " . $localFilePath . "\n";
    104.         // } else {
    105.             echo '商品图片:<img src="' . $imageUrl . '" width="100" height="100">';
    106.         // }
    107.         
    108.     }
    109. } else {
    110.     echo "No image data to download.\n";
    111. }
    112. $goodsSn =  $row['goodsSn'];
    113. $goodsSn = urlencode($goodsSn);
    114.     $url = '$goodsSn; //获取库存
    115.    $postData = [
    116.     'goodsSn' => $goodsSn,
    117. ];
    118.     $goodsSnData = curlRequest($url, $postData);
    119.    if ($goodsSnData !== null && isset($goodsSnData["rows"])) {
    120.     $Snrows = $goodsSnData["rows"][0]["number"];
    121.     echo urldecode($goodsSn).'库存:'.$Snrows.'件' ;
    122.    }   
    123.    echo '<br>';
    124. }
    125. ?>
    复制代码



    回复

    使用道具 举报

    网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

    GMT+8, 2024-12-22 00:37

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表