一个方法解决所有的 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. mysql远程访问1045的问题解决

    mysql远程访问1045的问题解决 首先进入mysql数据库,然后输入下面两个命令 grant all privileges on *.* to 'root'@'%' identified by ' ...

  2. Tecplot: 多截面云图显示

    [原创]禁止转载,需要转载请联系作者 想要使用Tecplot显示图1中这样一张云图,即删除掉接近0的一些正负的压力值,尝试了多种方法后成功实现: 图1 多截面云图显示 问题:如何去掉 -0.3< ...

  3. sparksql错误报No such file or director

    今天在非hadoop用户使用sparksql处理insert overwrite table a select b left join c这个句型遇到以下的错误. Error: org.apache. ...

  4. paddlepaddle

    1. 训练过程中cost出现nan 可能是因为有脏数据,寻找脏数据的方法就是,设置batch_size=1, paddle.reader.shuffle 中buf_size=1 一条一条的进行训练,看 ...

  5. Python:从入门到实践--第三章--列表简介--练习

    #1.将一些朋友的姓名存储在一个列表中,并将其命名为friends.依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来. #2.继续使用1中的列表,为每人打印一条消息,每条消息包含相同的问候语 ...

  6. linux配置服务器

    梳理一下这次配置服务器的思路. 1,挂载磁盘 Java和neigx上传到根目录下,tomcat放在data目录下,数据库新建文件夹也在data下, 2,配置环境变量 3,nginx修改域名 4,数据库 ...

  7. [Java Web学习]JDBC事务处理

    1. Spring中加入数据库的bean <bean id="dataSource" class="org.apache.commons.dbcp.BasicDat ...

  8. JAVA for(i = 0; i<a.length; i++) 解析

    下列 System.out.printf 语句输出的结果是什么? Char a[]={„a‟,‟b‟,‟c‟,‟d‟,‟e‟}; For(i=0; i<=a.length/2; i++) { c ...

  9. 渗透测试学习 九、 MSsql注入上

    MSsql注入漏洞详解 (Asp.Aspx站,常见于棋牌网站.考试网站.大学网站.政府网站.游戏网站.OA办公系统) 大纲:msSQL数据库调用分析 msSQL注入原理 msSQL注入另类玩法 msS ...

  10. js页面加载完成事件

    jquery的一种简写形式: $(function(){ alert("页面加载完成!"); });  其对应的完整形态为: $(document).ready(function( ...