服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|编程技术|正则表达式|C/C++|

服务器之家 - 编程语言 - PHP教程 - php实现的Curl封装类Curl.class.php用法实例分析

php实现的Curl封装类Curl.class.php用法实例分析

2020-11-20 13:22deeka PHP教程

这篇文章主要介绍了php实现的Curl封装类Curl.class.php用法,以完整实例形式较为详细的分析了Curl封装类的定义及相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了php实现的Curl封装类Curl.class.php用法。分享给大家供大家参考。具体如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?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用法:

?
1
2
$curl = new Curl();
$curl->get('http://www.XXX.com/');

POST用法:

?
1
2
$curl = new Curl();
$curl->get('http://www.XXX.com/', 'p=1&time=0');

希望本文所述对大家的php程序设计有所帮助。

延伸 · 阅读

精彩推荐
  • PHP教程php发送与接收流文件的方法

    php发送与接收流文件的方法

    这篇文章主要介绍了php发送与接收流文件的方法,实例分析了php针对流文件的常见操作技巧,需要的朋友可以参考下...

    傲雪星枫2282020-09-04
  • PHP教程php strrpos()与strripos()函数

    php strrpos()与strripos()函数

    以下是对php中的strrpos函数与strripos函数的用法进行了详细的介绍,需要的朋友可以过来参考下 ...

    PHP教程网3842020-05-18
  • PHP教程实现php删除链表中重复的结点

    实现php删除链表中重复的结点

    在本篇文章中,我们给大家带来了关于php删除链表中重复的结点的相关知识点内容以及相关代码,有兴趣的朋友们参考下。...

    laozhang3412019-09-05
  • PHP教程关于PHP实现异步操作的研究

    关于PHP实现异步操作的研究

    一般来说PHP适用的场合是web页面展示等耗时比较短的任务,如果对于比较花时间的操作如resize图片、大数据导入、批量发送EDM、SMS等,就很容易出现操作超...

    PHP教程网2452020-03-10
  • PHP教程fetchAll()与mysql_fetch_array()的区别详解

    fetchAll()与mysql_fetch_array()的区别详解

    本篇文章是对fetchAll()与mysql_fetch_array()的区别进行了详细的分析介绍,需要的朋友参考下 ...

    PHP教程网2882020-04-02
  • PHP教程php中rename函数用法分析

    php中rename函数用法分析

    这篇文章主要介绍了php中rename()函数用法,较为详细的分析了rename()函数中参数的含义及具体的使用方法,具有一定的参考借鉴价值,需要的朋友可以参考下...

    PHP之家4782020-08-11
  • PHP教程浅谈apache和nginx的rewrite的区别

    浅谈apache和nginx的rewrite的区别

    浅谈apache和nginx的rewrite的区别,需要的朋友可以参考一下 ...

    PHP教程网1492020-03-12
  • PHP教程PHP单元测试框架PHPUnit用法详解

    PHP单元测试框架PHPUnit用法详解

    这篇文章主要介绍了PHP单元测试框架PHPUnit用法,结合实例形式详细分析了单元测试框架PHPUnit原理、安装、使用相关操作技巧与注意事项,需要的朋友可以参考...

    一个新手4972019-06-29