CURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 CURL 库。使用PHP的CURL 库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,CURL 是一个功能强大的PHP库。

PHP建立CURL请求的基本步骤

①:初始化

curl_init()

②:设置属性

curl_setopt().有一长串CURL 参数可供设置,它们能指定URL请求的各个细节。

③:执行并获取结果

curl_exec()

④:释放句柄

curl_close()

CURL实现GET和POST

①:GET方式实现

 1  //初始化
 2     $curl = curl_init();
 3     //设置抓取的url
 4     curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
 5     //设置头文件的信息作为数据流输出
 6     curl_setopt($curl, CURLOPT_HEADER, 1);
 7     //设置获取的信息以文件流的形式返回,而不是直接输出。
 8     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 9     //执行命令
10     $data = curl_exec($curl);
11     //关闭URL请求
12     curl_close($curl);
13     //显示获得的数据
14     print_r($data);

②:POST方式实现

 1 //初始化
 2     $curl = curl_init();
 3     //设置抓取的url
 4     curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
 5     //设置头文件的信息作为数据流输出
 6     curl_setopt($curl, CURLOPT_HEADER, 1);
 7     //设置获取的信息以文件流的形式返回,而不是直接输出。
 8     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 9     //设置post方式提交
10     curl_setopt($curl, CURLOPT_POST, 1);
11     //设置post数据
12     $post_data = array(
13         "username" => "coder",
14         "password" => "12345"
15         );
16     curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
17     //执行命令
18     $data = curl_exec($curl);
19     //关闭URL请求
20     curl_close($curl);
21     //显示获得的数据
22     print_r($data);

③:如果获得的数据时json格式的,使用json_decode函数解释成数组。

$output_array = json_decode($data,true); //如果第二个参数为true,就转为数组的形式。如果不填就为对象的形式

如果使用json_decode($data)解析的话,将会得到object类型的数据。

我自己封装的一个函数

 1 //参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies
 2  function curl_request($url,$post='',$cookie='', $returnCookie=0){
 3         $curl = curl_init();
 4         curl_setopt($curl, CURLOPT_URL, $url);
 5         curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
 6         curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
 7         curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
 8         curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
 9         if($post) {
10             curl_setopt($curl, CURLOPT_POST, 1);
11             curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
12         }
13         if($cookie) {
14             curl_setopt($curl, CURLOPT_COOKIE, $cookie);
15         }
16         curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
17         curl_setopt($curl, CURLOPT_TIMEOUT, 10);
18         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
19         $data = curl_exec($curl);
20         if (curl_errno($curl)) {
21             return curl_error($curl);
22         }
23         curl_close($curl);
24         if($returnCookie){
25             list($header, $body) = explode("\r\n\r\n", $data, 2);
26             preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);
27             $info['cookie']  = substr($matches[1][0], 1);
28             $info['content'] = $body;
29             return $info;
30         }else{
31             return $data;
32         }
33 }

这俩个函数虽然不难,但是还是值得学习一下的。因为在做接口或者调用的接口的时候,必定会用到这俩个函数。

转载于:https://www.cnblogs.com/myJuly/p/10107289.html

php curl处理get和post请求相关推荐

  1. PHP中使用cURL实现Get和Post请求的方法

    PHP中使用cURL实现Get和Post请求的方法,需要的朋友可以参考一下 1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等 ...

  2. php curl无视ssl,用Curl实现Post和Get请求,可绕过SSL验证

    今天撸码用到了Curl的post和get请求并需要绕过SSL验证,现将代码打包以备后用: function request_by_curl($url, $post_data = '', $timeou ...

  3. curl/wget 模拟发送post请求

    curl/wget 模拟发送post请求 curl -H "这里是请求header信息" -X POST -d "这里是请求body体"  ip:port -O ...

  4. 使用PHP CURL 模拟HTTP实现在线请求工具-toolfk程序员工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  5. php curl 发送https请求失败,php的curl扩展无法发起https请求

    很奇怪的是,file_get_content函数可以对https地址发起请求并且收到响应报文,但是curl就不可以,这是什么原因呢?我已经安装了openssl扩展. function fetch($u ...

  6. php curl实现get请求,PHP中使用curl实现Get和Post请求 | 严佳冬

    一.基本结构 1.初始化 curl_init() 2.设置变量 curl_setopt() .最为重要,一切玄妙均在此.有一长串curl参数可供设置,它们能指定URL请求的各个细节. 执行并获取结果 ...

  7. php curl https 443,PHP CURL支持HTTP、HTTPS 请求亲测可用

    废话就不多说 直接上代码,亲测好用原生: /** * curl发送htpp请求 * 可以发送https,http,get方式,post方式,post数据发送 */ public function da ...

  8. curl 发送各种格式的请求

    HTTP 的 POST 请求通常是用于提交数据,可以通过这篇文章来了解各种提交方式:四种常见的 POST 提交数据方式.做 Web 后端开发时,不可避免地要自己给自己发请求来调试接口,这里要记录的内容 ...

  9. php使用curl实现get和post请求的方法,数据传输urldecode和json

    PHP支持CURL库,利用URL语法规定来传输文件和数据的工具,支持很多协议,包括HTTP.FTP.TELNET等. 优点:是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS.CURL ...

最新文章

  1. PHP——分页显示数据库内容
  2. webpack打包vue文件报错,但是cnpm run dev正常,最后我只想说:是我太笨,还是webpack4.4版本太坑...
  3. docker环境搭建
  4. Unrecognised tag: 'build'
  5. 【ZOJ - 3778】Talented Chef(贪心)
  6. python爬虫金融数据_python爬虫项目-爬取雪球网金融数据(关注、持续更新)
  7. php foreach 多出一个_PHP如何实现统计数据合并
  8. python基础语法总结(超详细)
  9. 多投资机构点评神州信息2019业绩:看好金融信创,给出增持评级!
  10. Jave_erhui
  11. mmsi是代表船舶什么_海上移动业务识别码(MMSI)是一种九位识别码,主要分配给()在DSC和NBDP通信中相互识别身份是使用。...
  12. 【ARC 123B】Increasing Triples(贪心)
  13. style 标签中动态设置颜色
  14. matlab ifft 后是复数,在matlab和numpy中使用ifft会产生不同的结果
  15. 【U3D入门小白教程——案例篇】之一:球吃豆
  16. SpringCloud:统一网关Gateway
  17. MacOS 平台使用CLion工具进行ndk开发示例
  18. PHP接口的概念与接口的应用场景
  19. 全球各国人口密度(1961-2018年)
  20. 软件测试笔记——如何测试一支笔?

热门文章

  1. zabbix监控linux文件目录,zabbix监控linux磁盘性能
  2. python对数据进行分类_在Python中对一系列数据进行分类的最佳方法
  3. POJ 3267为什么优先队列超时,DP就能过,难过
  4. 数据结构-队列之链式队列
  5. 嵌入式基础之----C++
  6. 目标检测的图像特征提取—Haar特征
  7. 安装MAMP后的控制台访问mysql问题
  8. 在Ubuntu和Mac OSX中安装boost
  9. 对传统视觉惯性的颠覆
  10. “不要尝试欺骗我一个吻”(奥·安达尔摄影展)