PHP中CURL的CURLOPT
创始人
2024-02-09 05:30:50
0次

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

在通常情况下,我们使用 CURL 来提交 POST 数据的时候,我们已经习惯了这样的写法:

代码如下:curl_setopt( $ch, CURLOPT_POSTFIELDS,$post_data);

但是这样的写法在有时候并不会很好用,可能会得到服务器返回的 500 错误。但是我们尝试在使用 Socket 方式向服务器提交数据的时候,我们会得到非常正确的结果。

例如我们在服务器上面存在一个如下的 PHP 文件:

代码如下:

当我们采用 CURL 在不注意细节的前提下向服务器发送一些数据,我们可能得到下面这样的结果,这不是我们理想中的结果:

复制代码 代码如下:[CONTENT_TYPE] => multipart/form-data; boundary=—————————-f924413ea122

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

代码如下:[CONTENT_TYPE] => application/x-www-form-urlencoded

从上面这个例子中不难看出,使用 CURL 并且参数为数据时,向服务器提交数据的时候,HTTP头会发送Content_type: application/x-www-form-urlencoded。这个是正常的网页

提交表单时,浏览器发送的头部。而 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 处理,然后再发送出去,能实现更好的兼容性,更小的请求数据包。

相关内容

热门资讯

中学换饮水机滤芯 全校每班平摊... 中学换饮水机滤芯 全校每班平摊98元  【中学换饮水机滤芯 全校每班平摊98元】2026年9月8日,...
外交部回应“印方建议调查小米公... 外交部回应“印方建议调查小米公司”  【外交部回应“印方建议调查小米公司”】2026年9月10日,外...
史上最长16天中秋国庆假期运输... 史上最长16天中秋国庆假期运输来了  【史上最长16天中秋国庆假期运输来了】2026年最贵的三个工作...
知识“沉”下去,防线“筑”起来...   在环球港一家餐厅等位时,市民王先生顺手扫了桌台上的二维码,利用碎片时间完成了一场消保知识问答“挑...
刘翔称已买断 获49.4万买断...   刘翔称已买断 获49.4万买断费  【刘翔称已买断 获49.4万买断费】9月10日,刘翔发文称9...
人类史上首次!老人比小孩多了 ...   人类史上首次!老人比小孩多了  【人类史上首次!老人比小孩多了】近日,美国人口普查局报告显示,全...
奶奶把男童放车篓多次拍头 已被...   奶奶把男童放车篓多次拍头 已被批评  【奶奶把男童放车篓多次拍头 已被批评】9月8日,广州荔湾区...
汇正财经贺峰专业能力怎么样?从...   评价“汇正财经贺峰专业能力怎么样”,不宜用一两个标签下结论,而应从可观测的维度入手:研究体系是否...
汇正财经服务费能退吗?透过实践...   汇正财经服务费能退吗?一些投资者在选择投顾服务时,会关注这一问题,但对于持牌机构而言,服务的核心...
央视曝光后 安徽山东河南连夜核...   央视曝光后 安徽山东河南连夜核查  【央视曝光后 安徽山东河南连夜核查】“查到最多挨两句训,罚点...
彻底告别LPL,曾是Chovy... 大家好,S16赛季的比赛已经正式开始了,相信绝大多数的玩家都关注了最近一段时间的对抗,各大赛区的比赛...
任天堂《塞尔达传说:时之笛》重... IT之家 9 月 8 日消息,任天堂今天在新一期直面会公布《塞尔达传说:时之笛》重制版游戏的实机演示...
两兄弟起家,总收入超4亿:UE... 好的创意,第一次最好用。 文/依光流 今天,葡萄君不得不跟各位聊聊《致命视角(Bodycam)》这款...
资讯:IG零封LGD花絮公开!... 根据雷竞技娱乐记者第一手资讯:IG以3比0横扫LGD,不仅闯入了败者组决赛,更重要的是锁定了冒泡赛胜...
有颜有料《剑侠世界4:无限》武... 气剑纵横,伞琴济世。西山居剑侠世界系列收官之作《剑侠世界4:无限》10月15日全平台公测,今日正式曝...
赛季末对抗路上分推荐,仅有3位... 这篇文章我们来聊一下赛季末的对抗路应该有用什么英雄去上分,这次的推荐就只推荐比较强力的了,可能英雄的...
西山居新游《剑侠世界4:无限》... 一代人的江湖,就是剑侠!西山居打造的剑侠世界系列收官之作《剑侠世界4:无限》将于10月15日全平台公...
Rookie通宵排位备战LGD... LPL季后赛精彩赛事依旧在火热进行中,今天的一场大战,网友们都期待已久了,IG的生死战,IG对阵LG...
为了省钱,付不起宣发费用的FP... 同行并不永远是冤家。 北京时间9月4日凌晨2点,首届“FPS游戏展”(The FPS Games S...
昔日爆款手游《旅行青蛙·中国之... 快科技9月8日消息,还记得当年刷屏朋友圈的《旅行青蛙》吗? 这款手游在2018年问世后迅速成为现象级...