各位老铁们好,相信很多人对curl post 参数都不是特别的了解,因此呢,今天就来为大家分享下关于curl post 参数以及curl调用post接口的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
一、php使用curl的post方法字符串和数组传值的区别
在PHP手册的curl_setopt函数中,关于CURLOPT_POSTFIELDS有如下描述:
全部数据使用HTTP协议中的"POST"操作来发送。
要发送文件,在文件名前面加上@前缀并使用完整路径。(5.5+建议用CURLFile)
这个参数可以通过urlencoded后的字符串类似'para1=val1¶2=val2&...'
或使用一个以字段名为键值,字段数据为值的数组。
如果value是一个数组,Content-Type头将会被设置成multipart/form-data。
因此,这两种传值方式是有所区别的。
当然,可以通过CURLOPT_HTTPHEADER指定Content-Type。
更多PHPcURL内容,请参考我的博客《PHPcURL实现模拟登录与采集使用方法详解教程》
二、curl发送POST请求
1、curl是常用的命令行工具,用来请求 Web服务器。它的名字就是客户端(client)的 URL工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman这一类的图形界面工具。
2、 curl默认协议就是GET,直接使用 curl url相当于直接用浏览器打开。
3、 curl使用-X POST可以发送POST消息。如果要post json数据,如:
三、php curl中CURLOPT_HTTPHEADER 这个参数的含义
php curl中CURLOPT_HTTPHEADER这个参数的含义是:CURLOPT_HTTPHEADER一个用来设置HTTP头字段的数组。Content-Type表示后面的文档属于什么MIME类型。charset表示浏览器可接受的字符集。
HTTP头Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。
1、Accept:浏览器可接受的MIME类型。
2、Accept-Charset:浏览器可接受的字符集。
3、Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
4、Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。
5、Content-Length:表示请求消息正文的长度。
6、Cookie:这是最重要的请求头信息之一。
1、curl_setopt_array—为cURL传输会话批量设置选项
2、curl_setopt—设置一个cURL传输选项
3、curl_close—关闭一个cURL会话
4、curl_copy_handle—复制一个cURL句柄和它的所有选项
5、curl_errno—返回最后一次的错误号
6、curl_error—返回一个保护当前会话最近一次错误的字符串
7、curl_escape—使用 URL编码给定的字符串
在实际的使用当中,使用得最多的函数是curl_setopt—设置一个cURL传输选项说明:bool curl_setopt( resource$ch, int$option, mixed$value)其中,ch由 curl_init()返回的 cURL句柄。option表示的是需要设置的CURLOPT_XXX选项。
1、CURLOPT_BUFFERSIZE每次获取的数据中读入缓存的大小,但是不保证这个值每次都会被填满。在cURL 7.10中被加入。
2、CURLOPT_CLOSEPOLICY不是CURLCLOSEPOLICY_LEAST_RECENTLY_USED就是CURLCLOSEPOLICY_OLDEST,还存在另外三个CURLCLOSEPOLICY_,但是cURL暂时还不支持。
3、CURLOPT_CONNECTTIMEOUT在发起连接前等待的时间,如果设置为0,则无限等待。
参考资料来源:百度百科-http请求头
四、curl常用参数详解及示例
curl是一个开源的命令行工具,它基于网络协议,对指定URL进行网络传输,得到数据后不任何具体处理(如:html的渲染等),直接显示在"标准输出"(stdout)上。
curl支持的网络协议有很多,包括:DICT、FILE、FTP、FTPS、GOPHER、GOPHERS、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、MQTT、POP3、POP3S、RTMP、RTMPS、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET和TFTP。
curl的参数也有很多,下面介绍一些常用的参数,建议收藏保存。
当curl不带有任何参数时,curl默认发出 GET请求,服务端返回的内容不会做任何解析直接在命令行显示。示例:
因为需要跳转到HTTPS,所以返回301:
使用-d参数时,header的 Content-Type被自动赋值为 application/x-www-form-urlencoded,并且发送 POST请求。示例:
因为需要跳转到HTTPS,同样返回301:
发送json请求还需要用到两个参数:-X参数指定 HTTP请求的方法,-H参数指定 HTTP请求的header。示例:
其中,-X参数指定 HTTP请求的方法为 POST,-H蚕食指定header的 Content-Type为 application/json; charset=UTF-8,-d参数指定数据为{"user":"万猫学","pwd":"onemore"}。
-i参数显示服务端响应内容的同时,也显示HTTP响应头。示例:
会先显示服务端的响应头,然后空一行,再显示服务端响应内容,如下:
-v参数显示的整个响应过程,我们可以看到底层到底发生了什么。示例:
其中,以*开头的行表示curl提供的额外信息,以>开头的行表示请求头,<开头的行表示响应头。
有时候响应内容太长,只关心响应头时,可以使用-I参数。示例:
五、...直接转发get参数post请求如何直接转发post参数
1、本文实例讲述了php使用CURL模拟GET与POST向微信接口提交及获取数据的方法。分享给大家供大家参考,具体如下:
2、php CURL函数可以模仿用户进行一些操作,如我们可以模仿用户提交数据也可以模仿用户进行网站访问了,下面我们来介绍利用CURL模拟进行微信接口的GET与POST例子,例子非常的简单就两个:
3、$AppId='1232assad13213123';
4、$AppSecret='2312312321adss3123213';
5、$getUrl='htq.com/cgi-bin/token?grant_type=client_credential&appid='.$AppId.'&secret='.$AppSecret;
6、curl_setopt($ch, CURLOPT_URL,$getUrl);
7、curl_setopt($ch, CURLOPT_HEADER, 0);
8、curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
9、curl_setopt($ch, CURL_SSLVERSION_SSL, 2);
10、curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
11、curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
12、$response= json_decode($data);
13、return$response->access_token;
14、$access_token=$this->getAccessToken();
15、$customMessageSendUrl='ht.qq.com/cgi-bin/message/custom/send?access_token='.$access_token;
16、$description='今天天气的详细信息(从第三方获取)。';
17、'touser'=>'OPENID',
18、'msgtype'=>'news',
19、'title'=>'当天天气',
20、'description'=>$description,
21、$postJosnData= json_encode($postDataArr);
22、$ch= curl_init($customMessageSendUrl);
23、curl_setopt($ch, CURLOPT_HEADER, 0);
24、curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
25、curl_setopt($ch, CURLOPT_POST, 1);
26、curl_setopt($ch, CURLOPT_POSTFIELDS,$postJosnData);
27、curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
28、curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
29、例子相对来说比较简单也没有什么好详细分析的了,大家照抄就可以实现我们想要的功能了.
关于本次curl post 参数和curl调用post接口的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。