使用 PHP 的 curl 可以发起 HTTP 外部请求,但是发起 POST 请求时,是无法直接传递数组的,从 curl 层面来说,也没有所谓的数组的概念,而更加通用也更合理的传递数据的格式其实是键值对(key value pair)。

那么,我们先得知道,为什么要传递数组。

HTTP 协议规定了 HTTP 请求的三个部分:状态行、请求头、消息主体。消息主体实际上是没有规定格式的。平常主要用到的几个请求头 Content-Type 为

application/x-www-form-urlencoded

multipart/form-data

application/json

text/xml

所以问题的答案很明白了,传递什么样的数据类型得看需要发送什么样的请求。

一个典型的 curl POST 请求是下面这样:

curl -X POST --data 'params[]=check1¶ms[]=check2' 'http://jayxhj.com/test/curl.php'

上面的请求将发送一个 Content-Type 为 application/x-www-form-urlencoded 的请求,请求的 body 为 params[]=check1&params[]=check2 ,在服务端,只需使用$_POST 即可获取。

那么回到 curl ,我们只需设置 option 为 CURLOPT_POSTFIELDS 的 VALUE 为 key/value pair ,即可将数组以字符串的形式传递至服务端,并直接由 $_POST 获取。

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, 'http://jayxhj.com/test/curl.php');

curl_setopt($curl, CURLOPT_HEADER, 0);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$array = [

'jayxhj',

'pt'

];

$str = http_build_query($array);

curl_setopt($curl, CURLOPT_POSTFIELDS, $str);

$data = curl_exec($curl);

curl_close($curl);

var_dump($data);

(责任编辑:最模板)

php curl post数组_PHP发起curl POST请求时传递数组相关推荐

  1. 使用CURL检测Clinet侧发起的HTTP请求各阶段时间

    2019独角兽企业重金招聘Python工程师标准>>> 第一.HTTP请求的过程介绍 一个HTTP请求,涉及多个阶段 1.DNS解析域名 2.请求从Clinet路由至Server,C ...

  2. HTTP GET请求方式传递数组参数

    http GET请求方式如何传递数组参数?一起来看看. 先在本地服务器上来一个controller方法,我们把接收到的参数打印在控制台上,顺便多此一举地返回一下响应结果 用postman请求一下: 再 ...

  3. vue 请求参数数组_vue中get请求如何传递数组参数

    前言: vue中在与后端进行数据交互时,使用axios发送请求,不做配置直接使用get请求传递数组类型参数的时候,后端是无法接收数据的,需要对axios一些简单的配置才能让后端完美的接收数组 1.问题 ...

  4. php curl header 下载_PHP通过curl下载文件到浏览器

    public function downFile($url, $file_name) { header('Content-Description: File Transfer'); header('C ...

  5. java http参数传递_Java在HTTP请求中传递数组参数的方法

    有个功能需要我请求别人提供的接口,该接口的参数是一个多维数组,大致类似这样:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

  6. GET请求如何传递数组参数

    方式一 可以将数组参数传递多次,springmvc会将多个同名参数自动封装成数组或者集合对象,示例如下: # 请求URL http://127.0.0.1:8080/getUsers?name=张三& ...

  7. 在c语言程序中,数组名做函数调用的实参时,传递给形参的是,若用数组名作为函数调用时的实参,则实际上传递给的形参的是(C)...

    若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址. 数组首地址数组第一个元素的地址.数组名字本身就是一个指针,它是一个指针常量,指向的地址不变. 比如定义了一个数组变量,编译器就会在内 ...

  8. ajax传递数组怎么传?ajax数组传递

    在我们平时的开发中,经常会需要用到ajax,关于ajax是什么,又该如何传递参数,相信通过上几篇文章你们已经有所了解.但是,ajax中要如何传递数组你们又知道吗?今天我们就来聊一聊ajax中该如何传递 ...

  9. ajax传递数组到后台时为空,ajax传递数组,后台接收为null解决方法

    traditional:true,加上这个就好,默认为false,即允许深度序列化参数,但是servlet api不支持,所有设为true阻止就好了. $.ajax({ type:'post', ur ...

最新文章

  1. Java学习-----单例模式
  2. Can not issue data manipulation statements with executeQuery()错误解决
  3. LeetCode MySQL 626. 换座位
  4. c# winform TreeView与ListView的项互相拖动的应用[转载]
  5. (35)SystemVerilog语言编写呼吸灯
  6. Linux文本文件与Windows下的格式转换
  7. java 改像素不改尺寸_如何不改变分辨率的情况下缩小尺寸PNG图片
  8. docker mysql 高可用_使用docker 基于pxc镜像搭建mysql高可用集群
  9. interview material
  10. linux下文件和目录的颜色表示
  11. Python 批量修改PDF文件名
  12. 学习某一门技术的步骤(韩顺平老师提供)
  13. CCF-CSP真题《202209-3—防疫大数据》思路+python题解
  14. elasticsearch学习笔记--聚合函数篇
  15. 凹凸世界手游服务器维修,凹凸世界手游进不去怎么办 解决方法介绍
  16. UEFI Specification 第二章 概述
  17. Qt6教程之三(2) QT使用qss
  18. 独家记忆孙嘉灵海棠首发 婉转乐曲演绎动心爱情
  19. 基于matlab振动信号处理,基于PC及MATLAB的振动信号处理的实现
  20. Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks(MAML)简析

热门文章

  1. 怎么用计算机远程vdi,windows8远程桌面虚拟机配置以便支持VDI用户的访问
  2. layui form表单点击无反应
  3. WebView开源库终极方案
  4. php做一个留言回复,php实现留言板功能的方法
  5. win 10 又来骚操作!真绝了啊……
  6. oracle如何添加触发器,Oracle之前插入触发器
  7. 我和计算机学习的故事
  8. typora 免费版, 最后一个beta版本下载0.11.18
  9. Typora Beta历史版本 (非收费版本)
  10. IdUtils工具类