Curl.class.php
4.1 KB
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?php
/**
* Curl 封装
*/
class Curl {
/**
*
* @param type $method 请求方式
* @param type $url 地址
* @param type $fields 附带参数,可以是数组,也可以是字符串
* @param type $userAgent 浏览器UA
* @param type $httpHeaders header头部,数组形式
* @param type $username 用户名
* @param type $password 密码
* @return boolean
*/
public function execute($method, $url, $fields = '', $userAgent = '', $httpHeaders = '', $username = '', $password = '') {
$ch = $this->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);
}
if (stripos($url, "https://") !== FALSE) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
}
$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;
}
}
/**
* 发送POST请求
* @param type $url 地址
* @param type $fields 附带参数,可以是数组,也可以是字符串
* @param type $userAgent 浏览器UA
* @param type $httpHeaders header头部,数组形式
* @param type $username 用户名
* @param type $password 密码
* @return boolean
*/
public function post($url, $fields, $userAgent = '', $httpHeaders = '', $username = '', $password = '') {
$ret = $this->execute('POST', $url, $fields, $userAgent, $httpHeaders, $username, $password);
if (false === $ret) {
return false;
}
if (is_array($ret)) {
return false;
}
return $ret;
}
/**
* GET
* @param type $url 地址
* @param type $userAgent 浏览器UA
* @param type $httpHeaders header头部,数组形式
* @param type $username 用户名
* @param type $password 密码
* @return boolean
*/
public function get($url, $userAgent = '', $httpHeaders = '', $username = '', $password = '') {
$ret = $this->execute('GET', $url, "", $userAgent, $httpHeaders, $username, $password);
if (false === $ret) {
return false;
}
if (is_array($ret)) {
return false;
}
return $ret;
}
/**
* curl支持 检测
* @return boolean
*/
public function create() {
$ch = null;
if (!function_exists('curl_init')) {
return false;
}
$ch = curl_init();
if (!is_resource($ch)) {
return false;
}
return $ch;
}
}