MCurl.php
2.4 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
<?php
namespace util;
/**
* 请求类
* Class MCurl
* @package util
*
* 例如:
* $data = MCurl::instance($url)->get();
*/
class MCurl
{
/* curl资源对象 */
private $ch;
private static $curl;
/**
* 构造方法
* @param string $url 请求的地址
* @param int $responseHeader 是否需要响应头信息
*/
public function __construct($url, $responseHeader = 0) {
$this->ch = curl_init($url);
// 设置以文件流的形式返回
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);
// 设置响应头信息是否返回
curl_setopt($this->ch, CURLOPT_HEADER, $responseHeader);
}
/**
* @param $url
* Description: 返回当前对象
*/
public static function instance($url, $responseHeader = 0) {
return new MCurl($url, $responseHeader);
}
/**
* 添加请求头
* @param string $charset 格式
*/
public function addHeaderIsJson($charset = 'utf-8') {
curl_setopt($this->ch, CURLOPT_HTTPHEADER, ['Content-type: application/json;charset=' . $charset]);
return self::$curl;
}
/**
* 析构方法
*/
public function __destruct() {
$this->close();
}
/**
* 添加请求头
* @param array $value 请求头
*/
public function addHeader($value) {
curl_setopt($this->ch, CURLOPT_HTTPHEADER, $value);
}
/**
* 发送请求
* @return string 返回的数据
*/
private function exec() {
return curl_exec($this->ch);
}
/**
* 发送get请求
* @return string 请求返回的数据
*/
public function get($https = true) {
if ($https) {
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false);
}
return $this->exec();
}
/**
* 发送post请求
* @param arr/string $value 准备发送post的数据
* @param boolean $https 是否为https请求
* @return string 请求返回的数据
*/
public function post($value, $https = true) {
if ($https) {
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, FALSE);
}
// 设置post请求
curl_setopt($this->ch, CURLOPT_POST, 1);
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $value);
return $this->exec();
}
/**
* 关闭curl句柄
*/
private function close() {
curl_close($this->ch);
}
}