设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 手机 公司
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php的curl封装类用法实例

发布时间:2022-07-25 12:41 所属栏目:121 来源:互联网
导读:使用函数之前我们要需要把php curl模块打开(libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll) 开启php curl函数库的步骤 1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路径*/ 2).把php5/libeay32.
  使用函数之前我们要需要把php curl模块打开(libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll)
 
  开启php curl函数库的步骤
 
  1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路径*/
  2).把php5/libeay32.dll,ssleay32.dll复制到系统目录windows/下
  3).重启apache
 
  代码如下:
 
  代码如下:<?php
  include_once('curl.class.php');
  $aa =new Curl('');
   $curlOptions = array(
   CURLOPT_URL => "http://www.xx.com/addTicket.jsp", //访问URL
   CURLOPT_RETURNTRANSFER => true, //获取结果作为字符串返回
   CURLOPT_REFERER => "ww.ww.ww/zw2",
   CURLOPT_HTTPHEADER => array('X-FORWARDED-FOR:139.197.14.19', 'CLIENT-IP:127.0.0.1','Proxy-Client-IP:139.197.14.19','WL-Proxy-Client-IP:139.197.14.19' ),
   CURLOPT_HEADER => 1, //获取返回头信息
   //CURLOPT_SSL_VERIFYPEER => false, //支持SSL加密
   CURLOPT_POST => true, //发送时带有POST参数
   CURLOPT_POSTFIELDS => 'ids=897&Submit=%E6%8A%95%E7%A5%A8', //请求的POST参数字符串
   CURLOPT_TIMEOUT => $aa->timeout //等待响应的时间
   );
   echo $aa->getResponseText($curlOptions);
 
  cul处理类:
 
  代码如下:<?php
  class Curl
  {
  public $cookieFile;
  public $timeout = 160;
  Public function __construct($dir){
  $this->cookieFile = $this->getTemporaryCookieFileName($dir);
  }
 
      /**
  * 设置CURL参数并发送请求,获取响应内容
  * @access private
  * @param $curlOptions array curl设置参数数组
  * @return string|false 访问成功,按字符串形式返回获取的信息;否则返回false
  */
  public function getResponseText($curlOptions) {
  /* 设置CURLOPT_RETURNTRANSFER为true */
  if(!isset($curlOptions[CURLOPT_RETURNTRANSFER]) || $curlOptions[CURLOPT_RETURNTRANSFER] == false) {
  $curlOptions[CURLOPT_RETURNTRANSFER] = true;
  }
  /* 初始化curl模块 */
  $curl = curl_init();
  /* 设置curl选项 */
  curl_setopt_array($curl, $curlOptions);
  /* 发送请求并获取响应信息 */
  $responseText = '';
  try {
  $responseText = curl_exec($curl);
  if(($errno = curl_errno($curl)) != CURLM_OK) {
  $errmsg = curl_error($curl);
  throw new Exception($errmsg, $errno);
  }
  } catch (Exception $e) {
  //exceptionDisposeFunction($e);
  //print_r($e);
  $responseText = false;
  }
  /* 关闭curl模块 */
  curl_close($curl);
  /* 返回结果 */
  return $responseText;
  }
  /**
  * 将Unicode字符串(u0000)转化为utf-8字符串,工具函数
  * @access private
  * @static
  * @param $string string Unicode字符串
  * @return string utf-8字符串
  */
  public function unicodeToUtf8($string) {
  $string = str_replace('u', '', strtolower($string));
  $length = strlen($string) / 4;
  $stringResult = '';
  for($i = 0; $i < $length; $i++) {
  $charUnicodeHex = substr($string, $i * 4, 4);
  $unicodeCode = hexdec($charUnicodeHex);
  $utf8Code = '';
  if($unicodeCode < 128) {
  $utf8Code = chr($unicodeCode);
  } else if($unicodeCode < 2048) {
  $utf8Code .= chr(192 + (($unicodeCode - ($unicodeCode % 64)) / 64));
  $utf8Code .= chr(128 + ($unicodeCode % 64));
  } else {
  $utf8Code .= chr(224 + (($unicodeCode - ($unicodeCode % 4096)) / 4096));
  $utf8Code .= chr(128 + ((($unicodeCode % 4096) - ($unicodeCode % 64)) / 64));
  $utf8Code .= chr(128 + ($unicodeCode % 64));
  }
  $stringResult .= $utf8Code;
  }
  return $stringResult;
  }
  private function getTemporaryCookieFileName($dir='.') {
  return (str_replace("", '/', tempnam($dir, 'tmp')));
  }
  }

  例子2
 
  代码如下:<?php
  //curl类
  class Curl
  {
      function Curl(){
          return true;
      }
      
      function execute($method, $url, $fields='', $userAgent='', $httpHeaders='', $username='', $password=''){
          $ch = Curl::create();
          if(false === $ch){
              return false;
          }
          if(is_string($url) && strlen($url)){
              $ret = curl_setopt($ch, CURLOPT_URL, $url);
          }else{
              return false;
          }
          //是否显示头部信息
          curl_setopt($ch, CURLOPT_HEADER, false);
          //
          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
          if($username != ''){
              curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
          }
          $method = strtolower($method);
          if('post' == $method){
              curl_setopt($ch, CURLOPT_POST, true);
              if(is_array($fields)){
                  $sets = array();
                  foreach ($fields AS $key => $val){
                      $sets[] = $key . '=' . urlencode($val);
                  }
                  $fields = implode('&',$sets);
              }
              curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
          }else if('put' == $method){
              curl_setopt($ch, CURLOPT_PUT, true);
          }
          //curl_setopt($ch, CURLOPT_PROGRESS, true);
          //curl_setopt($ch, CURLOPT_VERBOSE, true);
          //curl_setopt($ch, CURLOPT_MUTE, false);
          curl_setopt($ch, CURLOPT_TIMEOUT, 10);//设置curl超时秒数
          if(strlen($userAgent)){
              curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
          }
          if(is_array($httpHeaders)){
              curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeaders);
          }
          $ret = curl_exec($ch);
          if(curl_errno($ch)){
              curl_close($ch);
              return array(curl_error($ch), curl_errno($ch));
          }else{
              curl_close($ch);
              if(!is_string($ret) || !strlen($ret)){
                  return false;
              }
              return $ret;
          }
      }
      
      function post($url, $fields, $userAgent = '', $httpHeaders = '', $username = '', $password = ''){
          $ret = Curl::execute('POST', $url, $fields, $userAgent, $httpHeaders, $username, $password);
          if(false === $ret){
              return false;
          }
          if(is_array($ret)){
              return false;
          }
          return $ret;
      }
      
      function get($url, $userAgent = '', $httpHeaders = '', $username = '', $password = ''){
          $ret = Curl::execute('GET', $url, '', $userAgent, $httpHeaders, $username, $password);
          if(false === $ret){
              return false;
          }
          if(is_array($ret)){
              return false;
          }
          return $ret;
      }
      
      function create(){
          $ch = null;
          if(!function_exists('curl_init')){
              return false;
          }
          $ch = curl_init();
          if(!is_resource($ch)){
              return false;
          }
          return $ch;
      }
  }
  ?>
 
  用法
 
  GET用法:
 
  代码如下:$curl = new Curl();
  $curl->get('http://www.jb51.net/');
 
  POST用法:
 
  复制代码 代码如下:$curl = new Curl();
  $curl->get('http://www.jb51.net/', 'p=1&time=0′)。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读