curl post 参数(curl调用post接口)

admin 201 0

各位老铁们好,相信很多人对curl post 参数都不是特别的了解,因此呢,今天就来为大家分享下关于curl post 参数以及curl调用post接口的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

一、php使用curl的post方法字符串和数组传值的区别

在PHP手册的curl_setopt函数中,关于CURLOPT_POSTFIELDS有如下描述:

全部数据使用HTTP协议中的"POST"操作来发送。

要发送文件,在文件名前面加上@前缀并使用完整路径。(5.5+建议用CURLFile)

这个参数可以通过urlencoded后的字符串类似'para1=val1&para2=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接口的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。