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