PHP请求

同步请求

 /**
     * Curl模拟浏览器提交
     * @param unknown $url
     * @param string $data
     * @return mixed
     */
    public function https_request($url, $data = null)
    {
        $curl = curl_init();
        //curl_setopt($curl, CURLOPT_PROXY, 'http://192.168.1.1:8080'); //代理
        //curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0'); //模拟浏览器
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        if (!empty($data)) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

异步请求

/**
    * 20190401php异步请求接口,post提交
    * @author shaoyuyuan <305400706@qq.com>
    * @param $url 接口路径
    * @param $param 内容
    * @param $timeout 设置连接的时限,单位为秒
    * @param $host 主机地址
    * @param $path 文件
    * @param $port 端口
    * @param $errno 如果errno的返回值为0,而且这个函数的返回值为FALSE,
    *        那么这表明该错误发生在套接字连接(connect())调用之前,
    *        导致连接失败的原因最大的可能是初始化套接字的时候发生了错误。
    * @param $errstr 错误信息将以字符串的信息返回。
    */
    public function syncRequest($url, $param=array(),$timeout =10)
    {
        //解析拆分url
        $urlParmas = parse_url($url);


        $host = $urlParmas['host'];
        $path = $urlParmas['path'];
        $port = isset($urlParmas['port'])? $urlParmas['port'] :80;
        $errno = 0;
        $errstr = '';
        $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
        $poststring = isset($param)? http_build_query($param) : '';
        if(!$fp){
        //error tell us
        echo "$errstr ($errno)\n";
           
        }else{


          //send the server request
          fputs($fp, "POST $path HTTP/1.1\r\n");
          fputs($fp, "Host: $host\r\n");
          fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
          fputs($fp, "Content-length: ".strlen($poststring)."\r\n");
          fputs($fp, "Connection: close\r\n\r\n");
          fputs($fp, $poststring . "\r\n\r\n");


          //loop through the response from the server
          // while(!feof($fp)) {
          //   echo fgets($fp, 4096);
          // }
          //close fp - we are done with it
          fclose($fp);
        }


    }
有header的请求
    /**
     * Curl模拟浏览器提交
     * @param unknown $url 请求地址
     * @param string $data 请求参数
     * @param string $header 请求header
     * @return mixed
     */
    public function https_request($url, $data = null, $header = [])
    {
        $curl = curl_init();
        //curl_setopt($curl, CURLOPT_PROXY, 'http://192.168.1.1:8080'); //代理
        //curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0'); //模拟浏览器
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        // 设置请求头
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

        if (!empty($data)) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值