php发送http put/patch/delete请求

今天学RESTful API的编写,发现不知道怎么发送HTTP PUT/PATCH/DELETE请求,还是要学习一个。
使用curl_opt函数来发送各式各样的http请求动作,不仅限于get和post。
在测试自己的restful api的时候,通过访问这个代理发送http put/patch/delete请求的php页面,完成测试。

<?php
/**
 * http.php
 * 用来向服务器的RESTful API发起各类HTTP请求的工具函数。
 *
 * 使用: http://mysite.com/http.php?action=xxx
 * xxx \in {get,post,put,patch,delete}
 *
 * Created by PhpStorm.
 * User: chris
 * Date: 16/8/11
 * Time: 下午1:22
 */

class commonFunction{
    function callInterfaceCommon($URL,$type,$params,$headers){
        $ch = curl_init($URL);
        $timeout = 5;
        if($headers!=""){
            curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
        }else {
            curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
        }
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        switch ($type){
            case "GET" : curl_setopt($ch, CURLOPT_HTTPGET, true);break;
            case "POST": curl_setopt($ch, CURLOPT_POST,true);
                curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
            case "PUT" : curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
                curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
            case "PATCH": curl_setopt($ch, CULROPT_CUSTOMREQUEST, 'PATCH');
                curl_setopt($ch, CURLOPT_POSTFIELDS, $params);break;
            case "DELETE":curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
                curl_setopt($ch, CURLOPT_POSTFIELDS,$params);break;
        }
        $file_contents = curl_exec($ch);//获得返回值
        return $file_contents;
        curl_close($ch);
    }
}

$params="{user:\"admin\",pwd:\"admin\"}";
//$headers=array('Content-Type: text/html; charset=utf-8');
//$headers=array('accept: application/json; Content-Type:application/json-patch+json');
$headers=array('Content-Type:application/json-patch+json');
#$url=$GLOBALS["serviceUrl"]."/user";
$url='http://mysite.com/user/11';
$cf = new commonFunction();

$action=strtoupper($_GET['action']);
echo "你指定的HTTP请求动作为".$action."<br/><hr/>";

$strResult = $cf->callInterfaceCommon($url,$action,$params,$headers);
echo "执行该HTTP请求动作,得到<br/>".$strResult;
时间: 2024-10-16 08:56:12

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

Jersey REST 服务中 DELETE 请求无法接收 entity body 作为参数

问题 在用 Jersey 构建 REST 服务时,当试图用 Ajax 传递一个 JSON 对象 作为参数执行 DELETE 方法时,后台接收到的对象为 null. 服务器的资源类写法为 @DELETE @Path("pojojson") @Consumes(MediaType.APPLICATION_JSON) public String deletePojoJsonBody(@QueryParam("name") String name ) { return &q

httpwebrequest-C# HttpWebRequest delete请求

问题描述 C# HttpWebRequest delete请求 请问在请求或发送JSON数据的时候,有什么方法使用DELETE请求?MSDN上说HttpWebRequest只有GET和POST两种方法啊,但是我用DELETE方法成功了,但是第二次使用后,再使用GET请求就断开连接了,求大神解惑. 解决方案 Http请求之--C#的HttpWebRequest实现POST方式请求

JAVA如何使用Delete请求方式,要求是携带请求体Body

问题描述 JAVA如何使用Delete请求方式,要求是携带请求体Body JAVA如何使用Delete请求方式,要求是携带请求体Body?因为POST和PUT请求方式可以携带String类型的请求体,现在遇到一个问题就是要使用Delete方式,请求体是一个JOSN格式的,我看了下,httpDelete好像不支持,这个怎么处理?有没有大神给个答案?

微信支付-Nodejs如何发送中文xml的post请求

问题描述 Nodejs如何发送中文xml的post请求 最近在接微信支付的sdk.需要向微信服务器post一个xml,xml中如果不带中文的话微信那边是可以正确识别的.但是如果带了中文微信那边就报xml格式错误. 发送的xml: <xml> <appid><![CDATA[wx6e7c4258200000000]]></appid> <attach><![CDATA[test]]></attach> <body>

asp.net-向服务器发送了两个异步请求 结果却总是同时返回

问题描述 向服务器发送了两个异步请求 结果却总是同时返回 js代码 window.onload = function () { gp(); gp1(); } function gp() { $.ajax({ type: "post", url: "Filepro.aspx", data: { type: "gp" }, success: function (data) { alert(data); setTimeout("gp()&qu

spring-Spring4 MVC 发送带参数的get请求,返回404

问题描述 Spring4 MVC 发送带参数的get请求,返回404 我很奇怪的是,不带参数就能执行controller里的内容,带了参数就直接404了. GET https://localhost:8443/devCms/news/news?pageNo=1&_t=1418783433655 404 (Not Found) 解决方案 那要看你是不是有拦截器把拦截了 跳转到一个不存在的页面,所有就有404了. 解决方案二: 断点调试,查看是否进入controller.如果没进入可能是你的spri

由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。(含服务端代码)

问题描述 演练一个Windows应用程序-聊天软件,分别有服务端和客户端问题是在服务端激发buttonStop_Click事件时出现"由于套接字没有连接并且(当使用一个sendto调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受."错误,不知道如何解决,麻烦高手帮帮我//下面是服务端代码usingSystem;usingSystem.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSys

c#Socket提示由于套接字没有连接并且没有提供地址,发送或接收数据的请求没有被接受。

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;usingSystem.Windows.Input;usingSyst

如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办?

理想的RESTful Web API采用面向资源的架构,并使用请求的HTTP方法表示针对目标资源的操作类型.但是理想和现实是有距离的,虽然HTTP协议提供了一系列原生的HTTP方法,但是在具体的网络环境中,很多是不支持的.比如有的浏览器只能发送GET和POST请求,客户端发送的PUT请求也不一定能够被服务器理解.除了客户端和服务器对请求采用的HTTP方法的制约外,像代理(Proxy).网关(Gateway)等这些中间部件都具有针对HTTP方法的限制.[本文已经同步到<How ASP.NET We