zoukankan      html  css  js  c++  java
  • CURL 支持 GET、PUT、POST、DELETE请求

    一个方法解决所有的 curl 请求的问题。

    <?php

    function curlTypeData( $method, $url, $data=false, $json=false )
    {
      $dataString = $json ? json_encode( $data ) : http_build_query( $data );
      $ch = curl_init(); // 启动一个 CURL 请求
      curl_setopt( $ch, CURLOPT_URL, $url ); // 确定要请求的地址
      curl_setopt( $ch, CURLOPT_HEADER, 0); // 是否显示返回的 Header 区域内容
      curl_setopt( $ch, CURLINFO_HEADER_OUT, true ); // 获取请求头信息
      curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true); // 获取的信息以文件流的形式返回
      curl_setopt( $ch, CURLOPT_TIMEOUT, 5 ); // 请求过期时间
      // curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
      // curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查

      // 判断要执行的 CURL 的请求方式
      $method = strtoupper( $method );
      switch ( $method ) {
        case 'GET':
          curl_setopt( $ch, CURLOPT_HTTPGET, true ); // 设置请求方式为 GET
          break;
        case 'POST':
          curl_setopt( $ch, CURLOPT_POST, true ); // 设置请求方式为 POST
          curl_setopt( $ch, CURLOPT_POSTFIELDS, $dataString );// 设置请求体,提交数据包
          break;
        case 'PUT':
          curl_setopt( $ch, CURLOPT_PUT, true ); // 设置请求方式为 PUT
          // curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'PUT' );// 设置请求方式为 PUT
          curl_setopt( $ch, CURLOPT_POSTFIELDS, $dataString );//设置请求体,提交数据包
          break;
        case 'DELETE':
          curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, 'DELETE' );// 设置请求方式为 DELETE
          break;
        default:
          echo "不存在请求方式";
          die();
      }

      // 判断是否要求 json
      if ( $json ) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
          'Content-Type: application/json; charset=utf-8',
          'Content-Length: ' . strlen($dataString))
        );
      }

      // 执行操作
      $output = curl_exec( $ch ); // 执行操作
      // $code = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); // 获取返回的状态码
      curl_close($ch); // 关闭CURL会话
      echo $output;
    }

    ?>

  • 相关阅读:
    rac11.2.0.4私网公网修改
    OGG应用复制进程报错OGG 01161
    顺序容器vector拷贝使用总结
    C++迭代器(STL迭代器)
    C++容器(STL容器)
    win10桌面和手机的扩展API,判断是否有实体后退键API
    python Django 之 Model ORM inspectdb(数据库表反向生成)
    flask框架-大结局
    flask框架-下
    flask框架-中
  • 原文地址:https://www.cnblogs.com/laowenBlog/p/8616118.html
Copyright © 2011-2022 走看看