一个方法解决所有的 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;
}

?>

CURL 支持 GET、PUT、POST、DELETE请求的更多相关文章

  1. IIS在默认情况并不支持对PUT和DELETE请求的支持

    IIS在默认情况并不支持对PUT和DELETE请求的支持: IIS拒绝PUT和DELETE请求是由默认注册的一个名为:“WebDAVModule”的自定义HttpModule导致的.WebDAV的全称 ...

  2. html form method 属性不支持put,delete请求方式,以及开启spring mvc的rest的方式

    1.加上隐藏域解决form method 不支持put,delete的请求方式的问题 2.配置spring mvc HiddenHttpMethodFilter过滤器实现对put和delete请求方式 ...

  3. ASP.NET IIS 支持PUT、DELETE请求

    IIS 本身不支持PUT.DELETE请求,但可以通过一下方法修改进而达到目的 删除IIS安装的WebDav模块,选择你的项目,右边有个“模块”,双击它:找到WebDavModule,删除它(不推荐, ...

  4. WebAPI IIS PUT和DELETE请求失败 405

    IIS拒绝PUT和DELETE请求是由于IIS为网站默认注册的一个名为WebDAVModule的自定义HttpModule导致的,如果我们的站点不需要提供针对WebDAV的支持,解决这个问题最为直接的 ...

  5. WebAPI IIS PUT和DELETE请求失败

    IIS拒绝PUT和DELETE请求是由于IIS为网站默认注册的一个名为WebDAVModule的自定义HttpModule导致的,如果我们的站点不需要提供针对WebDAV的支持,解决这个问题最为直接的 ...

  6. WebApi接口传参不再困惑(4):传参详解 一、get请求 二、post请求 三、put请求 四、delete请求 五、总结

    前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路.本 ...

  7. ABP PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词) 引发客户端错误 No 'Access-Control-Allow-Origin' header is present on the requested resource

    先请检查是否是跨域配置问题,请参考博客:http://www.cnblogs.com/donaldtdz/p/7882225.html 一.问题描述 ABP angular前端部署后,查询,新增都没问 ...

  8. 浅谈get,post,put和delete请求

    get.put.post.delete含义与区别   1.GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改.增加数据,不会影 ...

  9. php发送http put/patch/delete请求Demo

    CURL请求对于PHPer是必备技能,使用curl_opt函数来发送各式各样的http请求动作,不仅限于get和post.在测试自己的restful api的时候,通过访问这个代理发送http put ...

  10. Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

    一.在使用Asp.net WebAPI 或Asp.Net Core WebAPI 时 ,如果使用了Delete请求谓词,本地生产环境正常,线上发布环境报错. 服务器返回405,请求谓词无效. 二.问题 ...

随机推荐

  1. makefile笔记8 - make的运行

    一般来说,最简单的就是直接在命令行下输入 make 命令, make 命令会找当前目录的makefile 来执行,一切都是自动的.但也有时你也许只想让 make 重编译某些文件,而不是整个工程,而又有 ...

  2. C#递归遍历窗体所有textbox控件并设置textbox事件的方法

    /// <summary> /// /// </summary> /// <param name="sender"></param> ...

  3. 路径R

    定义文件路径时前面加个r 例如 firstfolder = r"C:\Users\1261\Desktop\" 不对其中的符号进行转义

  4. Decorator 装饰(结构型)

    Decorator 装饰(结构型) 一:描述: Decorator装饰模式是动态地给一个对象增加一些额外的功能职责特性. 来替换以前使用的继承来静态扩展对象的功能,避免子类的增多,做到更灵活: 注:和 ...

  5. python基础分享

    # 一.变量命名规范 # 1.数字 字母 下划线 组成 # 2.不能数组开头和纯数字 # 3.不能用python相关关键字 # 4.不要用中文 # 5.要有意义 # 6.不要太长 # 7.区分大小写 ...

  6. ArcGIS中的坐标系:基本概念和常用操作(二)

    关于坐标系,上次的内容还没有结束. 上次已经解释清楚关于投影坐标系和地理坐标系的区别了,它们在实际应用上也有诸多不同. 下面这张图应该比较清晰 我们经常能发现,当计算面积时,提示面积已禁用,原因就在于 ...

  7. 解决Maven web 项目 Cannot detect Web Project version. Please specify version of Web Project through ... 的错误

    创建maven项目的时候,maven文件头报错: Cannot detect Web Project version. Please specify version of Web Project th ...

  8. C++实验七

    #include <iostream> using namespace ::std; int main() { ios_base::fmtflags original_flags = co ...

  9. ORA-28000: the account is locked解决

    首先使用具有sysdba权限的账户登陆,如sys账户和system账户 新建一个sql窗体,并执行语句解锁被锁定的账户,如我这里sgyw账户: alter user sgyw account unlo ...

  10. RESTful Levels & HATEOAS

    什么是RESTful REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的.翻译过来就是"表现层状态转化.” REST是一种软件架构风格.设计风格,而不是 ...