Home > Backend Development > PHP Tutorial > 使用PHP CURL的POST数据

使用PHP CURL的POST数据

WBOY
Release: 2016-06-20 12:59:36
Original
922 people have browsed it

curl 是使用URL语法的传送文件工具,支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户+口令证明、文件传送恢复、http代理通道和大量其他有用的技巧。

原来php默认并不进行此项功能的扩展,但还是有的,只是没有让它生效罢了。打开PHP安装目录,搜索以下三个文件 ssleay32.dll、libeay32.dll和 php_curl.dll,一一拷贝到系统目录下的system32文件夹下,修改php.ini文件,找到;extension= php_curl.dll行,去掉前面的;号,保存,重启服务器。

下面举几个例子。

短彩信发送

01 $xml_data = '

02

03

04

05

06

07 '.$pns.'

08

09     '.$content.'

10

11 ';

12  

13 $url = 'http://www.nowamagic.net/service/taskSubmit';//接收XML地址

14  

15 $header = "Content-type: text/xml";//定义content-type为xml

16 $ch = curl_init(); //初始化curl

17 curl_setopt($ch, CURLOPT_URL, $url);//设置链接

18 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置是否返回信息

19 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//设置HTTP头

20 curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式

21 curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_data);//POST数据

22 $response = curl_exec($ch);//接收返回信息

23 if(curl_errno($ch)){//出错则显示错误信息

24     print curl_error($ch);

25 }

26 curl_close($ch); //关闭curl链接

27 echo $response;//显示返回信息

POST数据飞信接口

01 $username = 13800138000;

02 $password = 123456;

03 $sendto = 13912345678;

04 $message = "测试一个试试看!";

05  

06 $curlPost = 'username='.urlencode($username).'&

07 password='.urlencode($password).'&

08 sendto='.urlencode($sendto).'&

09 message='.urlencode($message).'';

10  

11 $ch = curl_init();//初始化curl

12 curl_setopt($ch,CURLOPT_URL,'http://sms.api.bz/fetion.php');//抓取指定网页

13 curl_setopt($ch, CURLOPT_HEADER, 0);//设置header

14 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上

15 curl_setopt($ch, CURLOPT_POST, 1);//post提交方式

16 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);

17 $data = curl_exec($ch);//运行curl

18 curl_close($ch);

19 print_r($data);//输出结果

飞信接口模式:http://sms.api.bz/fetion.php?username=您的移动飞信登录手机号,&password=您的移动飞信登录密码,&sendto=接收短信的飞信好友手机号,&message=短信内容。

总结一下使用curl方法:

初始化curl 使用curl_setopt设置目标url,和其他选项 curl_exec,执行curl 执行后,关闭curl 最后一步就是输出

CERL 多线程

curl一般用来抓取网页,第二种就是get或者post数据,第三种应用就是实现PHP的多线程任务。下面来实现多线程的:

01

02 /*

03 curl 多线程抓取

04 */

05  

06  /**

07      * curl 多线程

08      * 

09      * @param array $array 并行网址

10      * @param int $timeout 超时时间

11      * @return array

12      */

13  function Curl_http($array,$timeout){

14     $res = array();

15     $mh = curl_multi_init();//创建多个curl语柄

16     $startime = getmicrotime();

17     foreach($array as $k=>$url){

18         $conn[$k]=curl_init($url);

19          

20         curl_setopt($conn[$k], CURLOPT_TIMEOUT, $timeout);//设置超时时间

21         curl_setopt($conn[$k], CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');

22         curl_setopt($conn[$k], CURLOPT_MAXREDIRS, 7);//HTTp定向级别

23         curl_setopt($conn[$k], CURLOPT_HEADER, 0);//这里不要header,加块效率

24         curl_setopt($conn[$k], CURLOPT_FOLLOWLOCATION, 1); // 302 redirect

25         curl_setopt($conn[$k],CURLOPT_RETURNTRANSFER,1);

26         curl_multi_add_handle ($mh,$conn[$k]);

27     }

28      //防止死循环耗死cpu 这段是根据网上的写法

29         do {

30             $mrc = curl_multi_exec($mh,$active);//当无数据,active=true

31         } while ($mrc == CURLM_CALL_MULTI_PERFORM);//当正在接受数据时

32         while ($active and $mrc == CURLM_OK) {//当无数据时或请求暂停时,active=true

33             if (curl_multi_select($mh) != -1) {

34                 do {

35                     $mrc = curl_multi_exec($mh, $active);

36                 } while ($mrc == CURLM_CALL_MULTI_PERFORM);

37             }

38         }

39      

40     foreach ($array as $k => $url) {

41           curl_error($conn[$k]);

42           $res[$k]=curl_multi_getcontent($conn[$k]);//获得返回信息

43           $header[$k]=curl_getinfo($conn[$k]);//返回头信息

44           curl_close($conn[$k]);//关闭语柄

45           curl_multi_remove_handle($mh  , $conn[$k]);   //释放资源 

46         }

47          

48         curl_multi_close($mh);

49         $endtime = getmicrotime();

50         $diff_time = $endtime - $startime;

51          

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template