首页 > 编程语言 >利用 curl 发送 post/get/del/put/patch 请求 PHP

利用 curl 发送 post/get/del/put/patch 请求 PHP

时间:2023-04-10 11:12:29浏览次数:39  
标签:请求 get patch del curl php

因为需要在 php 开发中对接其它接口需要用 php curl 去对接其它接口 我把他们封装成函数。这里面是封装好的会自动把 data 进行转成 json 格式,同时解码成 php 数组输出

get请求:

<?php
function geturl($url){
        $headerArray =array("Content-type:application/json;","Accept:application/json");
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);
        $output = curl_exec($ch);
        curl_close($ch);
        $output = json_decode($output,true);
        return $output;
}

POST请求:

<?php
function posturl($url,$data){
        $data  = json_encode($data);    
        $headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json");
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return json_decode($output,true);
}

PUT请求:

<?php
function puturl($url,$data){
    $data = json_encode($data);
    $ch = curl_init(); //初始化CURL句柄 
    curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URL
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //设为TRUE把curl_exec()结果转化为字串,而不是直接输出 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST,"PUT"); //设置请求方式
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置提交的字符串
    $output = curl_exec($ch);
    curl_close($ch);
    return json_decode($output,true);
}

  

del请求:

<?php
function delurl($url,$data){
    $data  = json_encode($data);
    $ch = curl_init();
    curl_setopt ($ch,CURLOPT_URL,$put_url);
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");   
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
    $output = curl_exec($ch);
    curl_close($ch);
    $output = json_decode($output,true);
}

  

patch请求:

<?php
function patchurl($url,$data){
    $data  = json_encode($data);
    $ch = curl_init();
    curl_setopt ($ch,CURLOPT_URL,$url);
    curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PATCH");  
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data);  
    $output = curl_exec($ch);
    curl_close($ch);
    $output = json_decode($output);
    return $output;
}

 

 

标签:请求,get,patch,del,curl,php
From: https://www.cnblogs.com/gramblog/p/17302267.html

相关文章

  • SpringBoot处理get请求的路径参数
    当请求方式为get并且使用路径参数的时候,请求格式形如: 后端controller中可以用实体类接收参数,并且不用添加任何注解,当然这个实体类是中的属性是有getter和setter方法的才行,接受方式形如:实体类形如: SpringBoot会自动做处理,将路径参数中的值填充到实体类对应的属性中......
  • Can't get JDBC type for null
    背景Java连接PostGres库,运行SparkSQL脚本报错,原因是:SQL脚本中不能存在null关键字.解决方案将null替换为''即可.......
  • 一统天下 flutter - widget 列表类: ExpansionTile - 列表项(可展开)
    一统天下flutterhttps://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-widget列表类:ExpansionTile-列表项(可展开)示例如下:lib\widget\list\expansion_tile.dart/**ExpansionTile-列表项(可展开)*/import'package:flutter/material.dart'......
  • 一统天下 flutter - widget 状态管理: 状态管理 - 自定义 controller
    一统天下flutterhttps://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-widget状态管理:状态管理-自定义controller示例如下:lib\state\controller.dart/**状态管理-自定义controller**为自定义组件指定一个自定义controller后,就可......
  • JAVA实体类-自定义Getter Setter
    ###案例一整个购物车存放的商品信息需要计算的属性需要重写get方法,保证每次获取属性都会进行计算privateBigDecimaltotalPrice;/***计算当前购物项总价*@return*/publicBigDecimalgetTotalPrice(){//等于单价*数量returnthis.price.multiply(......
  • 【Java 并发】【十】【JUC数据结构】【五】DelayQueue延迟阻塞队列原理
    1 前言前两节我们看了BlockingQueue阻塞队列的两个子类,LinkedBlockingQueue、ArrayBlockingQueue,它们都是使用了ReentrantLock、Condition的来实现的,在进行插入操作、拉取数据操作之前为了并发安全都需要进行加锁;然后插入时候在容量满的时候发现没有空间了,这时候调用Condition.......
  • Vue——patch.ts【十四】
    前言前面我们简单的了解了vue初始化时的一些大概的流程,这里我们扩展下Vue的patch。内容这一块主要围绕vue中的__patch__进行剖析。__patch__Vue.prototype.__patch__的方法位于scr/platforms/web/runtime/index.ts中;//installplatformpatchfunction//判断是......
  • CommunityToolkit.Mvvm8.1 viewmodel使用-旧式写法(2)
     本系列文章导航https://www.cnblogs.com/aierong/p/17300066.htmlhttps://github.com/aierong/WpfDemo(自我Demo地址)  0.说明CommunityToolkit.Mvvm8.1有一个重大更新的功能:源生成器功能,它极大简化我们的mvvm代码但是本篇先总结一下原写法,下篇再总结源生成器......
  • C++逆向分析——new和delete new[]和delete[]
    在堆中创建对象我们可以在什么地方创建对象?全局变量区,在函数外面在栈中创建对象,也就是函数内在堆中创建对象注意:之前一直提到的堆栈实际上是两个概念->堆、栈,我们之前所讲的就是栈,从本章开始要严格区分。在C语言中,我们可以通过一个函数去申请一块内存,就是malloc(N)......
  • delphi中Base64编码转成PDF文件
    Base64编码转成PDF文件  PDF文件转成Base64编码:首先,将PDF文件加载到MemoryStream中:varms:TMemoryStream;beginms:=TMemoryStream.Create;tryms.LoadFromFile('file.pdf');然后,使用TIdEncoderMIME将TMemoryStream转换为Base64编码的字符串:varencoder:TIdEncoderMIME;base......