php curl发送post请求的注意点

PHP使用CURL发送POST请求方法总结(API对接必备) 最近在使用PHP对接许多供应商的接口,各种各样的语言各种格式要求的接口都有,涉及到数据的 MD5加密,sha1 加密,sha256加密、解密、签名验证等各种问题。对于开发者来说需要深入理解HTTP协议的各个数据参数的含义。 网络协议 1、请求使用http协议,GET请求方式。注:请求如果涉及中文或者特殊字符,请做utf-8 进行urlencode编码。2、返回格式为默认为xml,如果http请求返回500错误,务必在请求头Accept加上application/xml; 如需返回json格式,请把 阅读详情
先看一段典型的CURL POST的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
curl_close($ch);



这段代码提交出去的Content-Type到底是multipart/form-data还是application/x-www-form-urlencoded呢?事实证明Content-Type的类型取决于$data的数据类型。

如果
$data
是字符串,如:$data ='file=content&name=lifreshman';则Content-Type是application/x-www-form-urlencoded。

如果
$data
是k=>v的数组,如:

$post_data = array(  
  'file' => 'asdfasdf',  
  'endpoint' => ‘test’,
  'timestamp'=> $timeStamp,
  'authKey' => $authkey
);则Content-Type是multipart/form-data

还有一个非常重要的问题,这个小问题花费了我几天时间:

$data是字符串时,curl_setopt($ch, CURLOPT_POST, 1); 这句代码可以放在后面,代码如下:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_POST, 1);
curl_exec($ch);
curl_close($ch);



 

但$data是k=>v的数组时,curl_setopt($ch, CURLOPT_POST, 1); 必须在设置发送数据curl_setopt($ch, CURLOPT_POSTFIELDS, $data);的前面,否则发送不成功,我当时就是因为放在了后面导致post数组时一直不成功:

 

curl的手册:http://php.net/manual/en/function.curl-setopt.php  (还是很有用的)

其中一句话:“If you try to upload file to a server, you need do CURLOPT_POST first and then fill CURLOPT_POSTFIELDS.“解决了我的问题

 

补充一点,如果想发送文件内容,可以设置如下参数 'file'=>'@/usr/local/apache/htdocs/airportCitys.txt' (要用绝对路径)

蠕虫病毒代码(纯属参考,请勿用于非法事件) 1.介绍蠕虫病毒 蠕虫病毒是一种常见的计算机病毒,是无须计算机使用者干预即可运行的独立程序,它通过不停的获得网络中存在漏洞的计算机上的部分或全部控制权来进行传播。 计算机病毒是指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据和恶意篡改系统. 影响计算机使用并且能够自我复制的一组计算机指令或者程序代码 中文名:蠕虫病毒 传染方式:网络和电子邮件 外文名:Worm virus 类型:计算机病毒 2.代码(建议使用虚拟机,否则你的计算机将会就地报废,使用时要关闭电脑病毒保护,否则程序会... 阅读详情

相关推荐

带隙基准电路设计实战:从HSPICE仿真到Virtuoso版图全流程解析

在模拟集成电路设计中,基准电压源是确保系统精度与稳定性的核心模块。其基本原理在于巧妙结合具有正、负温度系数的电压,通过加权求和实现近似零温度系数的稳定输出,这一特性对于高精度数据转换器、电源管理芯片等至关重要。从工程实践角度,利用HSPICE进行深入的直流工作点、温度扫描和工艺角仿真,是验证电路性能、优化温度系数和电源抑制比的关键步骤。而借助Cadence Virtuoso进行版图实现时,必须重点关注电阻与BJT的匹配布局、敏感节点的保护以及电源完整性设计,以确保设计意图在硅片上得以准确呈现。通过完整的从前

weixin_29181861的博客 287

curl_setopt 函数参数中文详解

curl_setopt()函数将为一个CURL会话设置选项。option参数是你想要的设置,value是这个选项给定的值。下列选项的值将被作为长整形使用(在option参数中指定):  *CURLOPT_INFILESIZE:当你上传一个文件到远程站点,这个选项告诉PHP你上传文件的大小。 *CURLOPT_VERBOSE:如果你想CURL报告每一件意外的事情,设置这个选项为一个非零值

tingyu的专栏 1531

Vectorless dynamic动态功耗分析——Voltus

power 计算工具会根据设计信息和用户提供的activity和switching约束来生成虚拟的worst-case的power vector,难点在于哪些instances视为switching,在没有仿真的前提下如何确定开关的时间,使用timing文件(TWF)

qq_44347276的博客 2790

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

在通常情况下,我们使用 CURL 来提交 POST 数据的时候,我们已经习惯了这样的写法:复制代码 代码如下:curl_setopt( $ch, CURLOPT_POSTFIELDS,$post_data);但是这样的写法在有时候并不会很好用,可能会得到服务器返回的 500 错误。但是我们尝试在使用 Socket 方式向服务器提交数据的时候,我们会得到非常正确的结果。例如我们在服务器上面存在一个如...

weixin_30578645的博客 288

MAX3232芯片引脚功能详解与外围电路设计避坑指南(从电荷泵到静电防护)

本文详细解析了MAX3232芯片的引脚功能与外围电路设计,重点介绍了其电荷泵架构和RS232通信接口的应用。通过实际案例和参数对比,提供了电路设计中的常见问题解决方案和静电防护建议,帮助工程师优化工业控制与嵌入式系统中的通信可靠性。

weixin_30596165的博客 434

紫光同创FPGA中ADF网表文件的黑匣子封装与PDS环境实战指南

本文详细介绍了在紫光同创FPGA开发环境中使用ADF网表文件进行黑匣子封装的实战指南。通过PDS环境配置、加密ADF生成、黑匣子集成及验证调试等步骤,帮助开发者实现核心IP保护,同时保持设计性能。特别适用于需要模块级代码保护的企业级FPGA开发场景。

weixin_33725239的博客 341

PHP中CURL的CURLOPT_POSTFIELDS参数使用细节

在通常情况下,我们使用 CURL 来提交 POST 数据的时候,我们已经习惯了这样的写法: 复制代码代码如下: curl_setopt( $ch, CURLOPT_POSTFIELDS,$post_data); 但是这样的写法在有时候并不会很好用,可能会得到服务器返回的 500 错误。但是我们尝试在使用 Socket 方式向服务器提交数据的时候,我们会得到非常正确的结果。 例如

AI 前沿技术实战博客:LLM / Agent / AI 制药 / 生信四大栏目日更,硬核干货 + 可复现代码,看完就能上手 2578

Calibre电子书阅读器个性化样式定制指南

本文详细介绍了如何通过Calibre电子书阅读器的用户样式表功能进行深度个性化样式定制。从修改全局字体、行距、背景配色(包括深色/浅色模式)到美化代码块、引用等特殊元素,本指南提供了完整的CSS代码示例与实战技巧,帮助用户打造专属的舒适阅读环境,显著提升电子书阅读体验。

vv45678的博客 920

curl模拟post请求提交

[php] view plain copy print? header('content-type:text/html;charset=utf-8');  function curlPost($url,$data,$method){      $ch = curl_init();   //1.初始化      curl_setopt($ch, CURLOPT_URL,

bu2543567472的博客 427

第十六届蓝桥杯大赛软件赛(编程类)知识点大纲

难度:[1-3]难度:[1-5]难度:[1-3]难度:[2-5]难度:[1-5]

Future_yzx的博客 4113

项目篇:移动平台机械臂视觉定位抓取实施(基于ROS架构)

ROS包内容: 这篇日志的目的是快速项目实施,所以详细的部分会不断补充。 1、相机采集包(创建抓取图像服务,单张) Realsense Camera(微软深度摄像头,官方提供ros包) Pylon Camera(basler相机,官方提供ros包) 2、定位算法包(抓取图像,定位标志物) Aruco_ros (二维码定位,官方提供ros包) Apriltag (二维码定位,官方提供ros包)...

南北粉面馆 6049

php post类,发送POST请求的php类

简介:classRequest{publicstaticfunctionpost($url,$post_data='',$timeout=5){//curl$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_POST,1);if($post_data!=''){c...

weixin_39827036的博客 234

FAST-LIVO2 源码精读(十六):接入自定义传感器——多雷达适配与内外参标定

本文是「FAST-LIVO2 激光-惯性-视觉里程计源码精读」专栏第十六篇。上一篇拆解了中每个关键参数的物理含义与调参路径,并反复强调外参RclPcl与时间偏移配错即全局失效;本篇承接这一悬念,回答更前置的工程问题——如何把 FAST-LIVO2 接到一套全新硬件上:新雷达如何通过的类型分支适配、相机内参与畸变模型如何配置、两组外参与时间偏移如何标定出来并填入 YAML,最后给出一份落地检查清单。

PX4-SLAM-PNC 199

php curl post发送失败,php curl发送post请求的注意点

先看一段典型的CURL POST的代码: $ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_exec($ch);curl_close($ch); 这段代码提交出去的Conten...

weixin_42345731的博客 592

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

使用 curl 发送 POST 请求的几种方式

HTTP 的 POST 请求通常是用于提交数据,可以通过这篇文章来了解各种提交方式:四种常见的 POST 提交数据方式。做 Web 后端开发时,不可避免地要自己给自己发请求来调试接口,这里要记录的内容是如何使用命令行工具curl来进行各种方式的 POST 请求。 application/x-www-form-urlencoded 最常见的一种 POST 请求,用 curl 发起这种请求也很...

BRAVE MAN的博客 2901

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

php的curl如何给其他服务器请求发送get、post请求

php的curl如何请求其他服务器上的数据 curl可以干什么? curl是PHP的一个扩展,利用该扩展可以实现服务器之间的数据或文件传输 也就是说curl就是一个工具,用来做服务器之间数据、文件传输的工具 用来采集网络中的html网页文件、其他服务器提供接口数据等 开启curl扩展 (1) 在php.ini里面开启curl这个扩展 (2) 将PHP的安装路径保存到环境变量的系统变量中(环...

特别剑的博客 1561

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

php curl json post请求_php post请求发送json对象数据参数

网页中发送请求时,大部分情况都参数以键值组合发送数据的,而一些第三方如java开发的接口中需要发送post请求,请求参数为json类型。既然要发送json数据,首页我们需要在请求头中定义数据类型为json,告诉服务器客服端发送过来的数据类型为json,设置请求头内容类型:Content-Type: application/json; charset=utf-8php发送post请求的json参数代...

weixin_39928461的博客 2111

PHP使用curl发送post请求的注意事项

前几天在工作中遇到了一个需求,当用户点击了某个按钮以后,后台发起一个post请求到我这里,我接受传递过来的数据。一开始同事是用公司框架公共封装的httpRequest()方法进行发送的,代码如下:

代元培 2119

PHP cURL POST请求发送JSON数据(从入门到精通,附完整示例代码)

掌握PHP cURL发送JSON数据POST请求的完整方法,解决接口对接难题。涵盖请求头设置、JSON编码、错误处理等关键步骤,适用于API调用场景。代码示例清晰,新手也能快速上手,值得收藏。

FuncLens的博客 998

转:PHP中的使用curl发送请求(GET请求和POST请求)

原文地址:http://www.jb51.net/article/104974.htm 使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 1.初始化连接句柄; 2.设置CURL选项; 3.执行并获取结果; 4.释放VURL连接句柄。 下面的程序片段是使用CURL发送HTTP的典型过程: // 1. 初始化 $c...

dianai7709的博客 554

php curl发送post请求失败,PHP中的使用curl发送请求(GET请求和POST请求)

使用CURL发送请求的基本流程使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤:1.初始化连接句柄;2.设置CURL选项;3.执行并获取结果;4.释放VURL连接句柄。下面的程序片段是使用CURL发送HTTP的典型过程// 1. 初始化$ch = curl_init();// 2. 设置选项,包括URLcurl_setopt($ch,CURLOPT_URL,"http://ww...

weixin_34587698的博客 509
上一篇: MKNetworkKit
下一篇: IOS真机测试
lifreshman
博客等级 码龄17年 6粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值