zoukankan      html  css  js  c++  java
  • curl模拟http请求

    简介

    cURL的官方定义为:curl is a command line tool for transferring data with URL syntax,即使用URL语法规则来传输数据的命令行工具

    PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同时支持 HTTPS 证书、HTTP POST、HTTP PUT、 FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。

    概念

    在PHP中使用cURL

    图示:

    cURL模拟get请求

    /**
     * get方式发送curl请求
     * @param string $url    请求服务器地址
     * @param array $header  请求头数据
     * @param int $timeout   超时时间
     * @return mixed
     * @author itbsl
     */
    function curl_get($url, $header=[], $timeout=30) {
    
        //初始化curl
        $curl = curl_init();
    
        //设置curl(请求的服务器地址)
        //参数1: curl资源
        //参数2: 配置项名称
        //参数3: 配置项的值
        curl_setopt($curl, CURLOPT_URL, $url);
    
        //跳过安全证书验证
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);  // 从证书中检查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);  // 跳过证书检查
    
        //设置获取的信息以文件流的形式返回,而不是直接输出
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    
        curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
    
        //发出请求
        $result = curl_exec($curl);
    
        //关闭curl资源
        curl_close($curl);
    
        return $result;
    }
    

    cURL模拟post请求

    /**
     * post方式发送curl请求
     * @param string $url   请求的服务器地址
     * @param array $data   要发送的数据
     * @param array $header 请求头数据
     * @param int $timeout  超时时间
     * @return mixed
     * @author itbsl<itbsl@foxmail.com>
     */
    function curl_post($url, $data=[], $header=[], $timeout=30) {
    
        //初始化curl
        $curl = curl_init();
    
        //设置curl(请求的服务器地址)
        //参数1: curl资源
        //参数2: 配置项名称
        //参数3: 配置项的值
        curl_setopt($curl, CURLOPT_URL, $url);
    
        //跳过安全证书验证
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);  // 从证书中检查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);  // 跳过证书检查
    
        //设置获取的信息以文件流的形式返回,而不是直接输出
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    
        //设置请求方式为post请求
        curl_setopt($curl, CURLOPT_POST, true);
    
        //设置post方式提交时携带的数据
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    
        curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
    
        //发出请求
        $result = curl_exec($curl);
    
        //关闭curl资源
        curl_close($curl);
    
        return $result;
    }
    
  • 相关阅读:
    c++ readIntger writeIntger
    c++ string split function
    uniapp 创建简单的tabs
    c++ 获取和设置 窗口标题
    两种js数组去重的方法
    将jquery和公共样式缓存到localStorage,可以减少Http请求,从而优化页面加载时间
    H5 多个视频 循环播放效果
    使用iScroll时,input等不能输入内容的解决方法
    修改EsayUi 中 tree 的原有样式,变为according 之类的样式 ,且子菜单显示在右侧
    跨浏览器的事件对象-------EventUtil 中的方法及用法
  • 原文地址:https://www.cnblogs.com/itbsl/p/9995882.html
Copyright © 2011-2022 走看看