www.legu.cc/simplewind/Lib/Util/Curl.class.php
2021-09-06 11:50:33 +08:00

138 lines
4.1 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
}