我正在使用REST API,除其他外,它使用DELETE方法,如下所示:

DELETE /resources/whatever/items/123

要使用PHP访问它,我使用这样的cURL:

self::$curl = curl_init();

curl_setopt_array(self::$curl, array(

CURLOPT_AUTOREFERER => true,

CURLOPT_FOLLOWLOCATION => true,

CURLOPT_RETURNTRANSFER => true,

));

如您所见,我的cURL实例是静态的,将在后续调用中重用.在“内置”请求方法之间切换时,这可以正常工作.例如,在我的get()方法中,我执行以下操作:

curl_setopt_array(self::$curl, array(

CURLOPT_HTTPGET => true,

CURLOPT_URL => self::BASE . 'whatever',

));

然后运行curl_exec().通过CURLOPT_HTTPGET显式设置请求方法,将清除可能的先前CURLOPT_POST.

但是,设置CURLOPT_CUSTOMREQUEST(例如,设置为DELETE)将覆盖任何其他内置请求方法.只要我想删除东西,这很好,但是调用例如curl_setopt(self :: $curl,CURLOPT_HTTPGET,true)将不会重置自定义方法;仍将使用DELETE.

我已经尝试将CURLOPT_CUSTOMREQUEST设置为null,false或空字符串,但这只会导致HTTP请求

/resources/whatever/items/123

即使用空字符串作为方法,后跟空格,然后是路径.

我知道我可以将CURLOPT_CUSTOMREQUEST设置为GET而不做任何问题的GET请求,但我想知道是否有可能重置CURLOPT_CUSTOMREQUEST.

解决方法:

这实际上是PHP中的a bug,因为原始的documentation声明如下:

Restore to the internal default by setting this to NULL.

不幸的是,正如您在the source code中所看到的,选项值在传递给底层库之前会被转换为字符串.

我编写了一个解决该问题的pull request,并允许为CURLOPT_CUSTOMREQUEST选项值传递NULL.

上面的补丁需要一些时间才能合并到项目中,因此在您开始使用此选项之前,您必须自己显式设置该方法.

更新

该修复程序已应用于5.5.11和5.6.0(beta1).

标签:php,rest,curl

来源: https://codeday.me/bug/20191007/1868894.html

php curl curlopt_customrequest,php – 如何重置CURLOPT_CUSTOMREQUEST相关推荐

  1. curl第六课 Http Digest Auth认证应用

    项目          在安迅士摄像机网页上,配置系统选项,HTTP/RTSP Password Settings 中, 选择Encrypted only.获取设备的云台状态信息,使用的是摘要认证 例 ...

  2. 在Ubuntu 14.04 64bit上使用pycURL模块示例

    PycURL 传说是实现Python下多线程网页抓取的效率最高的解决方案,本质是对libcurl C语言库的封装. 在Linux上有个常用的命令 curl(非常好用),支持curl的就是大名鼎鼎的li ...

  3. 抓取epsg.io的内容

    简述 epsg.io是一个查询EPSG坐标系相关信息的好网站,内容很全.有各种格式的定义可以直接下载,也有坐标系的范围名称等相关信息,所以想抓取这些信息下来,方便对接各个系统. epsg.io本身是开 ...

  4. 海康摄像头http抓图

    老版本的摄像头使用海康的协议http://user:password@192.168.1.64/ISAPI/Streaming/channels/33/picture 就可以取得图片. 然后新型号的摄 ...

  5. ocr文字识别 php源码,OCR文字识别

    OCR文字识别 简介 HI,您好,欢迎使用学而思网校AI开放平台OCR文字识别接口服务. 本文档主要针对需要集成HTTP API的技术研发工程师,详细描述OCR文字识别能力相关的技术内容.您可以通过 ...

  6. libcurl第五课 Digest Authentication摘要验证使用

    场景          在安迅士摄像机网页上,配置系统选项,HTTP/RTSP Password Settings 中, 选择Encrypted only.获取设备的云台状态信息,使用的是摘要认证 例 ...

  7. php curl rst,CURL错误:Recv失败:通过对等方重置连接 - PHP Curl

    我有这个奇怪的错误, CURL ERROR: Recv failure: Connection reset by peer 这就是它发生的方式,如果我没有连接到服务器并突然试图通过PHP中的CURL连 ...

  8. PHP CURL 中文说明

    1.CURL是利用URL语法在命令行方式下工作的开源文件传输工具. 2.它被广泛应用在Unix.多种Linux发行版中.而且有DOS和Win32.Win64下的移植版本号. 3.它支持非常多协议:FT ...

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

    PHP 利用 curl 发送 post get del put patch 请求              参考地址    PHP cURL 函数 概述 PHP支持的由Daniel Stenberg创 ...

最新文章

  1. Redis 笔记(14)— 持久化及数据恢复(数据持久方式 RDB 和 AOF、数据恢复、混合持久化)
  2. vector容器总结.xml
  3. 大话中文文本分类之TextRCNN
  4. php error 2,一起搞懂PHP的错误和异常(二)
  5. Android 硬件 OpenGL ES 模拟设计概述
  6. directly test Gateway frontend service in AG3 SICF
  7. Exynos4412 文件系统制作(二)—— 文件系统简介
  8. Day04-循环和列表
  9. 【Python】Numpy包的安装使用
  10. 无法执行该VI,必须使用LabVIEW完整版开发系统才可以解决该错误
  11. idea 快捷删除移动_21个极大提高开发效率的VS Code快捷键
  12. 公众号文章折叠点击后展开案例_(案例)蜂窝纸板在包装中的应用重型箱
  13. JavaScript学习(八十一)—将多维数组转化为一维数组
  14. ESP32开发 CMakeLists包含同级目录.h文件,error: gpioX.h: No such file or directory
  15. java多线程上传文件_Java大文件分片上传/多线程上传
  16. 一封程序员的苦逼辞职信
  17. python 直方图每个bin中的值_python – 如何获取直方图bin中的数据
  18. 根据单词列表通过网络下载单词发音
  19. 免费下载百度文库等文档
  20. 服务器搬迁方案_服务器搬迁方案

热门文章

  1. 记一次Emotet木马下载器的分析
  2. java文件删除选择框,从列表框中删除文件
  3. 搜索优化—如何在Google搜索引擎上排名靠前Google左侧排名
  4. 【CF #777 div2】A-C
  5. RK3588平台开发系列讲解(AUDIO篇)Linux音频调试--alsa-utils 工具
  6. Django项目实践3 - Django模型(字段、数据库操作及模型继承)
  7. Spark 调优技巧总结
  8. 【kimol君的无聊小发明】—用python写图片格式批量处理工具
  9. mysql不识别生僻字_MySQL生僻字(不常用字)的完整解决方案
  10. 发布“智能化、平台化、全程电子化”的新OA系统——e-cology9.0