CURL请求对于PHPer是必备技能,使用curl_opt函数来发送各式各样的http请求动作,不仅限于get和post。
在测试自己的restful api的时候,通过访问这个代理发送http put/patch/delete请求的php页面,完成测试。请参考下面的DEMO。

  1. <?php
  2. /**
  3. * http.php
  4. * 用来向服务器的RESTful API发起各类HTTP请求的工具函数。
  5. *
  6. * 使用: http://www.phpthinking.com/test.php?action=xxx
  7. * xxx \in {get,post,put,patch,delete}
  8. *
  9. * Created by PhpStorm.
  10. * User: PHPthinking
  11. * Date: 2017/12/28
  12. * Time: 下午1:22
  13. */
  14.  
  15. class commonFunction{
  16. function callInterfaceCommon($URL,$type,$params,$headers){
  17. $ch = curl_init($URL);
  18. $timeout = 5;
  19. if($headers!=""){
  20. curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
  21. }else {
  22. curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
  23. }
  24. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  25. curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  26. switch ($type){
  27. case "GET" : curl_setopt($ch, CURLOPT_HTTPGET, true);break;
  28. case "POST": curl_setopt($ch, CURLOPT_POST,true);
  29. curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
  30. case "PUT" : curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
  31. curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
  32. case "PATCH": curl_setopt($ch, CULROPT_CUSTOMREQUEST, 'PATCH');
  33. curl_setopt($ch, CURLOPT_POSTFIELDS, $params);break;
  34. case "DELETE":curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
  35. curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
  36. }
  37. $file_contents = curl_exec($ch);//获得返回值
  38. return $file_contents;
  39. curl_close($ch);
  40. }
  41. }
  42. $params="{user:\"admin\",pwd:\"admin\"}";
  43. //$headers=array('Content-Type: text/html; charset=utf-8');
  44. //$headers=array('accept: application/json; Content-Type:application/json-patch+json');
  45. $headers=array('Content-Type:application/json-patch+json');
  46. #$url=$GLOBALS["serviceUrl"]."/user";
  47. $url='http://www.phpthinking.com/user/11';
  48. $cf = new commonFunction();
  49.  
  50. $action=strtoupper($_GET['action']);
  51. echo "你指定的HTTP请求动作为".$action."<br/><hr/>";
  52.  
  53. $strResult = $cf->callInterfaceCommon($url,$action,$params,$headers);
  54. echo "执行该HTTP请求动作,得到<br/>".$strResult;

php发送http put/patch/delete请求Demo的更多相关文章

  1. php发送http put/patch/delete请求

    今天学RESTful API的编写,发现不知道怎么发送HTTP PUT/PATCH/DELETE请求,还是要学习一个. 使用curl_opt函数来发送各式各样的http请求动作,不仅限于get和pos ...

  2. 解决SpringMVC put,patch,delete请求数据拿不到的问题

    解决SpringMVC put,patch,delete请求参数拿不到的问题 废话不多说,核心代码如下: 在web.xml中添加如下代码 <!-- 解决web端不能put,delete等请求的问 ...

  3. 在ASP.NET Core中用HttpClient(二)——发送POST, PUT和DELETE请求

    在上一篇文章中,我们已经学习了如何在ASP.NET Core中使用HttpClient从Web API获取数据.此外,我们还学习了如何使用GetAsync方法和HttpRequestMessage类发 ...

  4. 【转】AJAX发送 PUT和DELETE请求注意事项

    jax使用restful服务发送put 和 delete 请求时直接传参会出现问题 一,采用POST  + _method:delete/put  + filter 的方法ajax发送put 和 de ...

  5. AJAX发送 PUT和DELETE请求参数传递注意点,了解一下

    ajax发送put 和 delete 请求时,需要传递参数,如果参数在url地址栏上,则可以正常使用, 如果在 data:中需要传递参数,(浏览器会使用表单提交的方式进行提交) 则需要注意此时应作如下 ...

  6. 使用HttpClient 发送 GET、POST、PUT、Delete请求及文件上传

    package org.caeit.cloud.dev.util; import java.io.File; import java.io.IOException; import java.io.Un ...

  7. springmvc 发送PUT 和 DELETE 请求

    一: 发送 DELETE 或者 PUT 请求: 1.在表单中加入一个隐藏的参数: _method  , 值是 DELETE (或者PUT) <form action="springmv ...

  8. C#发送POST,GET,DELETE请求API,并接受返回值

    发送POST请求 /// <summary> /// API发送POST请求 /// </summary> /// <param name="url" ...

  9. 如何同步发送put或者delete请求

    1.必须把前端发送方式改为post . 2.在web.xml中配置一个filter:HiddenHttpMethodFilter过滤器 3.必须携带一个键值对,key=_method,  value= ...

随机推荐

  1. jeecg-boot 简易部署方案

    jeecg-boot采用前后端分离的方案,前后端代码不在一起.想要部署 一般是通过反向代理实现. jeecg-boot目前支持更好更简单的解决方案: jeecg 在配置文件里面指定了 webapp的存 ...

  2. css样式的书写顺序及原理——很重要!

    记得刚开始学习前端的时候,每次写css样式都是用到什么就在样式表后添加什么,完全没有考虑到样式属性的书写顺序对网页加载代码的影响.后来逐渐才知道正确的样式顺序不仅易于查看,并且也属于css样式优化的一 ...

  3. 每日一练之大整数加法(P1255 数楼梯)

    走楼梯走一步还是两步的问题其实就是斐波那契数列(F(n)=F(n-1)+F(n-2),而在int型范围内存在45个相异的数,题干说明楼梯总数可以为5000,则考虑使用字符串进行存储.当两个数相加产生进 ...

  4. String(Java版本)

    import java.io.UnsupportedEncodingException; public class Driver { public static void main(String[] ...

  5. C博客01--顺序、分支结构

    1.本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 经过一周的初步学习,对C语言我有了一定的认识,也体验到了代码的乐趣,这应该为我以后的学习开了一个好头.在 ...

  6. Codeforces Round #436 C. Bus

    题意:一辆车在一条路上行驶,给你路的总长度a,油箱的容量b,加油站在距离起点的距离f,以及需要走多少遍这条路k(注意:不是往返) 问你最少加多少次油能走完. Examples Input 6 9 2 ...

  7. IDEA 中tomcat日志位置

    参考 https://blog.csdn.net/dela_/article/details/78555977 /home/dela/.IntelliJIdea2017.1/system/tomcat ...

  8. LR实现问答系统查询功能

    脚本中未对问题进行参数化处理,关键点在于关联取值和web_add_header()函数的使用 Action() { web_url("首页", "URL=http://q ...

  9. Hadoop2.7.7_HA高可用部署

    1. Hadoop的HA机制 前言:正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 1.1. HA的运作机制 (1)hadoop-HA集群运作机制介绍 所谓HA,即高可用(7*2 ...

  10. SpringMVC中注解@RequestBody和@ResponseBody的使用区别

    首先上源码 在面试时经常会问到我们如何使用SpringMVC将Http请求转换为java对象,或者又是问如何将结果转换为java的呢? SpringMVC在接收到请求之后HandlerMapping像 ...