| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- namespace XiTaiYouPay\util;
- /**
- * http请求工具类
- */
- class HttpRequestUtil
- {
- /**
- * TODO:这里设置代理机器,只有需要代理的时候才设置,不需要代理,请设置为0.0.0.0和0
- * 本例程通过curl使用HTTP POST方法,此处可修改代理服务器,
- * 默认CURL_PROXY_HOST=0.0.0.0和CURL_PROXY_PORT=0,此时不开启代理(如有需要才设置)
- * @var unknown_type
- */
- const CURL_PROXY_HOST = "0.0.0.0";
- const CURL_PROXY_PORT = 8080;
- /**
- * POST请求
- * @param $data
- * @return mixed
- * @throws Exception
- */
- public static function sendPost($url, $data, $sign)
- {
- // 设置header头
- $header = array();
- $header[0] = "signature: ".$sign;
- $header[1] = "Content-type: application/json";
- $curl = curl_init();
- //设置超时
- curl_setopt($curl, CURLOPT_TIMEOUT, 20);
- //如果有配置代理这里就设置代理
- if(self::CURL_PROXY_HOST != "0.0.0.0" && self::CURL_PROXY_PORT != 0){
- curl_setopt($curl,CURLOPT_PROXY, self::CURL_PROXY_HOST);
- curl_setopt($curl,CURLOPT_PROXYPORT, self::CURL_PROXY_PORT);
- }
- curl_setopt($curl,CURLOPT_URL, $url);
- //不校验SSL证书
- curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
- curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);
- //设置header
- curl_setopt($curl, CURLOPT_HEADER, TRUE);
- curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
- //要求结果为字符串且输出到屏幕上
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
- /**
- * TODO: 如果需要证书请求,开启以下代码
- * 设置证书
- * 使用证书:cert 与 key 分别属于两个.pem文件
- * 证书文件请放入服务器的非web目录下
- */
- // curl_setopt($curl,CURLOPT_SSLCERTTYPE,'PEM');
- // curl_setopt($curl,CURLOPT_SSLCERT, PayConfig::SSLCERT_PATH);
- // curl_setopt($curl,CURLOPT_SSLKEYTYPE,'PEM');
- // curl_setopt($curl,CURLOPT_SSLKEY, PayConfig::SSLKEY_PATH);
- //post提交方式
- curl_setopt($curl, CURLOPT_POST, TRUE);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
- //运行curl
- $result = curl_exec($curl);
- //返回结果处理
- if($result){
- list($header, $body) = explode("\r\n\r\n", $result, 2);
- $headers = explode("\r\n", $header);
- $headList = array();
- foreach ($headers as $head) {
- $value = explode(':', $head);
- if (count($value) > 1) {
- $headList[$value[0]] = $value[1];
- }
- }
- curl_close($curl);
- $resp_res = array();
- $resp_res["signature"] = trim($headList["signature"]);
- $resp_res["responseData"] = $body;
- return $resp_res;
- } else {
- $error = curl_errno($curl);
- curl_close($curl);
- throw new Exception("curl出错,错误码:$error");
- }
- }
- }
|