You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
2.8 KiB
PHTML

5 years ago
<?php
/**
* http、https通信类
* ============================================================================
* api说明
* setReqContent($reqContent),设置请求内容无论post和get都用get方式提供
* getResContent(), 获取应答内容
* setMethod($method),设置请求方法,post或者get
* getErrInfo(),获取错误信息
* setCertInfo($certFile, $certPasswd, $certType="PEM"),设置证书双向https时需要使用
* setCaInfo($caFile), 设置CA格式未pem不设置则不检查
* setTimeOut($timeOut) 设置超时时间,单位秒
* getResponseCode(), 取返回的http状态码
* call(),真正调用接口
*
* ============================================================================
*
*/
class PayHttpClient {
//请求内容无论post和get都用get方式提供
var $reqContent = array();
//应答内容
var $resContent;
//错误信息
var $errInfo;
//超时时间
var $timeOut;
//http状态码
var $responseCode;
function __construct() {
$this->PayHttpClient();
}
function PayHttpClient() {
$this->reqContent = "";
$this->resContent = "";
$this->errInfo = "";
$this->timeOut = 120;
$this->responseCode = 0;
}
//设置请求内容
function setReqContent($url,$data) {
$this->reqContent['url']=$url;
$this->reqContent['data']=$data;
}
//获取结果内容
function getResContent() {
return $this->resContent;
}
//获取错误信息
function getErrInfo() {
return $this->errInfo;
}
//设置超时时间,单位秒
function setTimeOut($timeOut) {
$this->timeOut = $timeOut;
}
//执行http调用
function call() {
//启动一个CURL会话
$ch = curl_init();
// 设置curl允许执行的最长秒数
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeOut);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
// 获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
//发送一个常规的POST请求。
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $this->reqContent['url']);
//要传送的所有数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->reqContent['data']);
// 执行操作
$res = curl_exec($ch);
$this->responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($res == NULL) {
$this->errInfo = "call http err :" . curl_errno($ch) . " - " . curl_error($ch) ;
curl_close($ch);
return false;
} else if($this->responseCode != "200") {
$this->errInfo = "call http err httpcode=" . $this->responseCode ;
curl_close($ch);
return false;
}
curl_close($ch);
$this->resContent = $res;
return true;
}
function getResponseCode() {
return $this->responseCode;
}
}
?>