当我们采用 CURL 在不注意细节的前提下向服务器发送一些数据,得到请求头的CONTENT_TYPE:

[CONTENT_TYPE] => multipart/form-data; boundary=—————————-f924413ea122

后面多出一个boundary,导致服务端获取不到提交的参数。

解决办法:

curl_setopt ( $curl, CURLOPT_POST, 1);
curl_setopt ( $curl, CURLOPT_HTTPHEADER,array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt ( $curl, CURLOPT_POSTFIELDS,http_build_query($params));

http_build_query($post_data) 来替代 $post_data 再向这个 PHP 脚本提交数据的时候,我们就会得到和上面不同的结果,这才是我们理想中的结果:

原因分析:

从上面这个例子中不难看出,使用 CURL 并且参数为数据时,向服务器提交数据的时候,HTTP头会发送Content_type: application/x-www-form-urlencoded。这个是正常的网页<form>提交表单时,浏览器发送的头部。而 multipart/form-data 我们知道这是用于上传文件的表单。包括了 boundary 分界符,会多出很多字节。
官方的手册上是这样说的:

The full data to post in a HTTP “POST” operation. To post a file, prepend a filename with @ and use the full path. This can either be passed as a urlencoded string like ‘para1=val1¶2=val2&…' or as an array with the field name as key and field data as value. If value is an array, the Content-Type header will be set to multipart/form-data.

使用数组提供 post 数据时,CURL 组件大概是为了兼容 @filename 这种上传文件的写法,默认把 content_type 设为了 multipart/form-data。虽然对于大多数服务器并没有影响,但是还是有少部分服务器不兼容。

经过一番总结最终得出结论:在没有需要上传文件的情况下,尽量对 post 提交的数据进行 http_build_query 处理,然后再发送出去,能实现更好的兼容性,更小的请求数据包。

PHP中curl的CURLOPT_POSTFIELDS请求时,Content-Type多出boundary=------------------------相关推荐

  1. shell处理curl返回数据_linux shell中curl 发送post请求json格式问题的处理方法

    今天在linux中使用curl发送一个post请求时,带有json的数据,在发送时发现json中的变量没有解析出来 如下 curl -i -X POST -H 'Content-type':'appl ...

  2. php循环输出多个网络地址图片,php中curl循环往请求多个URL和多线程去请求多个URL的方法...

    php 中curl 循环去请求多个URL和多线程去请求多个URL的方法 第一种:循环请求$sr=array(url_1,url_2,url_3); foreach ($sr as $k=>$v) ...

  3. Content type 'multipart/form-data;boundary=--------------------------496238283102520395700876;解决方案

    Content type 'multipart/form-data;boundary=--------------------------496238283102520395700876;解决方案 在 ...

  4. message: Content type 'multipart/form-data;boundary=----WebKitFormBoundaryksbSBUwTCB6eHI3j;charse

    postman 发送post请求出现错误:"message": "Content type 'multipart/form-data;boundary=----WebKi ...

  5. Content type 'multipart/form-data;boundary=--------------------------258075776767858126421870;chars

    记录一下小错误,今天用postman测试添加接口时报错,想传一个实体到接口,便选了一个Headers Body使用form-data 便出现了标题的错误 "msg": " ...

  6. Content type 'multipart/form-data;boundary=----WebKitF;charset=UTF-8' not supported

    springboot后台接收文件和对象的时候,会报Content type 'multipart/form-data;boundary=----WebKitF;charset=UTF-8' not s ...

  7. HttpMediaTypeNotSupportedException:Content type 'multipart/form-data;boundary=W10Jdm..'not supported

    最近在做一个excel导入的功能.在入参 body 中同时传入文件和其它基本信息结果出现如题异常.在此记录下解决办法.以做记录. org.springframework.web.HttpMediaTy ...

  8. php curl curlopt_getfields,PHP中CURL的CURLOPT_POSTFIELDS参数使用细节

    核心提示:CURL确实是一个不错的好工具,不仅在PHP中还是其他的操作系统中,都是一个非常好用的.但是如果你有些参数没有用好的话,那可能会得不到自己理想中的结果. CURL确实是一个不错的好工具,不仅 ...

  9. 性别字段在数据库中存储数字,查询时,如何查询出数字对应的男和女?(case when的应用)

    今天敲代码的时候,刚好遇到这个问题,写博客记一下. 情况如下:性别字段在数据库中存储的是数字,男对应1,女对应0.然后,查询的时候,我想查询出男和女两个字,而不是1和0. 一开始,我写的sql语句,是 ...

最新文章

  1. 分享我们用Leangoo看板工具做的采购看板,超级好用
  2. jbpm 6 vs activities 5评估(持续更新、亲测实际项目评估)
  3. Programming Entity Framework-dbContext 学习笔记第五章
  4. nginx Win下实现简单的负载均衡(2)站点共享Session
  5. 25. Leetcode 143. 重排链表 (链表-基础操作类-重排链表)
  6. python树的实现_Python实现简单字典树的方法
  7. pytorch 模型可视化_【深度学习】高效使用Pytorch的6个技巧:为你的训练Pipeline提供强大动力...
  8. java反编译源码_java反编译获取源码
  9. vi编辑器和系统分区
  10. 审美灵感|插画配色分享
  11. 【Willy Susilo 学术报告】Public-Key Encryption with Multi-Ciphertext Equality Test in Cloud Computing
  12. 【报告分享】2021B站创作者生态报告-哔哩哔哩(附下载)
  13. Unity 渲染管线工作流程
  14. Mac苹果电脑没有声音怎么办
  15. 融资融券五月试点 首批入选券商或增至5家
  16. 拒不协助执行会有什么后果?
  17. HTML基础知识整理
  18. 用Keil写一个8路流水灯,两侧各一个LED同时亮起,之后依次向中间聚拢,然后在展开,接着,在8个灯闪三次,为一次循环...
  19. 银粉和薄片行业调研报告 - 市场现状分析与发展前景预测
  20. java第八天,嗯.....自己总结的方法和练习题吧

热门文章

  1. 《小红牛》APP内测功能陆续上线
  2. 技术浅滩到商业深海,MathWorks眼中AI的未来
  3. java 图片 白边_java 去除图片白边 两种方法的比较
  4. 《R语言与数据挖掘》⑤高级绘图工具【lattice包】【ggplot2】【交互式】
  5. CPP头文件中不应包含using声明
  6. phpcms 点赞_Ajax实现phpcms 点赞功能(图文教程)
  7. 学了mysql用户权限我直接把管理员禁闭了
  8. 电子琴节奏包制作_制作MIDI电子音乐离不开的三件“法宝”
  9. maven私服下载jar包失败的问题记载
  10. 盘点HR日常工作数据计算大全