118 lines
2.8 KiB
PHP
118 lines
2.8 KiB
PHP
<?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;
|
||
}
|
||
|
||
}
|
||
?>
|