123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?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 = array();
- $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;
- }
- }
- ?>
|