zoukankan      html  css  js  c++  java
  • php curl request

     1 /**
     2  * @desc curl request请求
     3  * @date 2016-12-07 16:26:55
     4  *
     5  * @param $arguments
     6  *
     7  * @return bool|mixed
     8  *
     9  * @internal param 请求的url $url
    10  * @internal param int|post为1 $ispost
    11  * @internal param array|参数 $params
    12  * @internal param string|请求的头部数据 $header
    13  * @internal param string|请求的cookie数据 $cookie
    14  * @internal param bool|请求数据错误是否返回获取的数据 $source
    15  *
    16  */
    17 function curlRequest($arguments = array())
    18 {
    19     $url = $arguments['url'];
    20     $ispost = isset($arguments['ispost']) ? $arguments['ispost'] : 0;
    21     $params = isset($arguments['params']) ? $arguments['params'] : array();
    22     $header = isset($arguments['header']) ? $arguments['header'] : "";
    23     $cookie = isset($arguments['cookie']) ? $arguments['cookie'] : "";
    24     $source = isset($arguments['source']) ? $arguments['source'] : TRUE;
    25 
    26 
    27     $ch = curl_init($url);
    28     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
    29     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
    30     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
    31     curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数 30s
    32     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // 在发起连接前等待的时间,如果设置为0,则无限等待。
    33     curl_setopt($ch, CURLOPT_HEADER, $header); // 设置请求头部header数据
    34 
    35     // post and 参数
    36     if ($ispost) {
    37         curl_setopt($ch, CURLOPT_POST, TRUE); // 是否使用post方式请求
    38         curl_setopt($ch, CURLOPT_POSTFIELDS, $params); // post 请求数据
    39         curl_setopt($ch, CURLOPT_URL, $url);
    40     } else {
    41         if ($params) {
    42             if (is_array($params)) {
    43                 $params = http_build_query($params);
    44             }
    45             curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
    46         } else {
    47             curl_setopt($ch, CURLOPT_URL, $url);
    48         }
    49     }
    50 
    51     // 设置cookie
    52     if ($cookie) {
    53         curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    54     }
    55     
    56     //抓取URL并把它传递给浏览器
    57     $result = curl_exec($ch);
    58     //var_dump($result);
    59     // 为false 说明curl错误
    60     if($result === false) {
    61         $result = 'ERROR(CURL): ['.curl_errno($ch) . ']' . curl_error($ch);
    62     }
    63 
    64     //获取执行后的 http 状态码
    65     $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    66     if ($httpCode != 200 && !$source) { // 非200说明异常
    67         $result = FALSE;
    68     }
    69 
    70     // [DEBUG]获取执行后的 http 头部Header
    71     if ($httpCode != 200 && isset($_GET['debug'])) {
    72         $httpInfo = curl_getinfo($ch);
    73         echo '<pre>' . print_r($httpInfo, true) . '</pre>' . PHP_EOL;
    74     }
    75 
    76     curl_close($ch); // 关闭cURL资源,并且释放系统资源
    77 
    78     return $result;
    79 }
  • 相关阅读:
    Go基础结构与类型06---房贷计算器
    Go基础结构与类型05---程序运算
    Go基础结构与类型04---基本数据类型
    Go基础结构与类型03---标准输入与输出
    Go基础结构与类型02---使用iota定义常量组
    Go基础结构与类型01---常量变量表达式
    java===IO=file
    java===IO=properties
    java===IO基本规律,各大常用IO流介绍练习
    java===IO字节流、字符流
  • 原文地址:https://www.cnblogs.com/cloudshadow/p/php-curl-request.html
Copyright © 2011-2022 走看看