php使用curl实现get和post请求的方法,数据传输urldecode和json
PHP支持CURL库,利用URL语法规定来传输文件和数据的工具,支持很多协议,包括HTTP、FTP、TELNET等.
优点:是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS.CURL可以根据URL前缀是'HTTP'还是'HTTPS'自动选择是否加密发送内容.还可以解决跨域问题等.
PHP建立CURL请求的基本步骤:
1:初始化 curl_init() 2:设置curl选项 curl_setopt() 3:执行并获取结果 curl_exec() 4:关闭释放资源 curl_close()
curl抓取百度网站示例demo:
1 <?php 2 //初始化curl资源 3 $ch = curl_init(); 4 5 //设置URL和相应的选项 6 curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com/"); 7 //设置头文件的信息作为数据流输出 8 curl_setopt($ch, CURLOPT_HEADER, 1); 9 10 //执行命令,并获取结果 11 curl_exec($ch); 12 13 //关闭curl资源,释放系统资源 14 curl_close($ch);
项目中比较常用到的是对回调数据接口处理.封装的方法支持post和get请求方法.数据传输包含urldecode和json.
1 <?php 2 class HttpClient 3 { 4 /* 5 *get请求 urldecode数据传输(支持http和https) 6 *@param $url接口地址 string 7 *@param $headers请求报文头body数据 array 8 *@return type 9 * */ 10 public static function get($url, $headers = array()) 11 { 12 $ch = curl_init(); //初始化 13 if (strpos($url, 'https') === 0) 14 { 15 //当请求https的数据时,会要求证书,这时候,加上下面这两个参数,规避ssl的证书检查 16 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //https请求 不验证证书和hosts 17 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 18 } 19 if (!empty($headers)) 20 { 21 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //设置http头部 22 } 23 curl_setopt($ch, CURLOPT_URL, $url); //设置获取的url地址 24 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置获取的信息以文件流的形式返回 25 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); //连接超时(秒) 26 curl_setopt($ch, CURLOPT_TIMEOUT, 4); //执行超时(秒) 27 28 $outPut = curl_exec($ch); //执行命令,并获取结果 29 curl_close($ch); //关闭curl资源,释放系统资源 30 31 return $outPut; 32 } 33 34 /* 35 *post请求 urldecode数据传输(支持http和https) 36 *@param $url接口地址 string 37 *@param $data接口参数 array 38 *@param $headers请求报文头body数据 array 39 *@return type 40 * */ 41 public static function post($url, array $data, $headers = array()) 42 { 43 $ch = curl_init(); //初始化 44 if (strpos($url, 'https') === 0) { 45 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 46 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 47 } 48 if (!empty($headers)) 49 { 50 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //设置http头部 51 } 52 53 curl_setopt($ch, CURLOPT_URL, $url); //设置获取的url地址 54 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置获取的信息以文件流的形式返回 55 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); //连接超时(秒) 56 curl_setopt($ch, CURLOPT_TIMEOUT, 4); //执行超时(秒) 57 curl_setopt($ch, CURLOPT_POST, 1); //设置post方式提交 58 //注意: 传递一个URL-encoded字符串,数据会被编码成 application/x-www-form-urlencoded,传递一个数组到CURLOPT_POSTFIELDS,curl会把数据编码成 multipart/form-data 59 curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); 60 61 $outPut = curl_exec($ch); //执行命令,并获取结果 62 curl_close($ch); //关闭curl资源,释放系统资源 63 64 return $outPut; 65 } 66 67 /* 68 *post请求 json数据传输(支持http和https) 69 *@param $url接口地址 string 70 *@param $data接口参数 array或json_encode过的数据 71 *@return type 72 * */ 73 public static function postJson($url, $data) 74 { 75 if (is_array($data)) { 76 $data = json_encode($data); 77 } 78 79 $ch = curl_init(); 80 if (strpos($url, 'https') === 0) { 81 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 82 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 83 } 84 85 curl_setopt($ch, CURLOPT_HTTPHEADER, array( 86 'Content-Type: application/json; charset=utf-8', 87 'Content-Length: ' . strlen($data) 88 ) 89 ); 90 curl_setopt($ch, CURLOPT_URL, $url); 91 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 92 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); 93 curl_setopt($ch, CURLOPT_TIMEOUT, 4); 94 curl_setopt($ch, CURLOPT_POST, 1); 95 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 96 97 $outPut = curl_exec($ch); 98 curl_close($ch); 99 100 return $outPut; 101 } 102 }
请求get和post方法实例:
1 //GET请求方法 2 $params = [ 3 'id' => 1, 4 'token' => '****' 5 ]; 6 $query = http_build_query($params); 7 $url = 'http://url地址' . '?' . $query; 8 $res = HttpClient::get($url); 9 $data = json_decode($res, true); 10 11 12 //POST请求方法 13 $params = [ 14 'id' => 1, 15 'token' => '****' 16 ]; 17 $url = 'http://url地址'; 18 $res = HttpClient::post($url, $params); 19 $data = json_decode($res, true);
转载于:https://www.cnblogs.com/cxx8181602/p/8330819.html
php使用curl实现get和post请求的方法,数据传输urldecode和json相关推荐
- PHP中使用cURL实现Get和Post请求的方法
PHP中使用cURL实现Get和Post请求的方法,需要的朋友可以参考一下 1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等 ...
- python写页面发送post请求_Python模拟浏览器向CSDN发送post请求的方法,POST
目录 1.发送get请求的方法 import requests import json def GET(url): #get请求 req = requests.get(url) #输出状态码 prin ...
- curl 发送各种格式的请求
HTTP 的 POST 请求通常是用于提交数据,可以通过这篇文章来了解各种提交方式:四种常见的 POST 提交数据方式.做 Web 后端开发时,不可避免地要自己给自己发请求来调试接口,这里要记录的内容 ...
- php curl无视ssl,用Curl实现Post和Get请求,可绕过SSL验证
今天撸码用到了Curl的post和get请求并需要绕过SSL验证,现将代码打包以备后用: function request_by_curl($url, $post_data = '', $timeou ...
- WAMP安装curl扩展并发起https请求
wamp安装curl扩展的方法: http://blog.csdn.net/superuser007/article/details/5781095 安装出现 PHP Extension " ...
- curl post json_curl 模拟 GETPOST 请求,以及 curl post 上传文件
curl 模拟 GETPOST 请求,以及 curl post 上传文件 一般情况下,我们调试数据接口,都会使用一个 postman 的工具,但是这个工具还是有点大了.事实上,我们在调试一些小功能的时 ...
- curl/wget 模拟发送post请求
curl/wget 模拟发送post请求 curl -H "这里是请求header信息" -X POST -d "这里是请求body体" ip:port -O ...
- curl命令行发送POST请求
在开发后对接口进行调试,效率往往是: 前端界面 > Postman > curl 有时候必须使用curl实现调用 请求示例 curl -X POST http://192.168.57.8 ...
- php中使用Curl、socket、file_get_contents三种方法POST提交数据
抓取远程内容,之前一直都在用file_get_content函数,其实早就知道有curl这么一个好东西的存在,但是看了一眼后感觉使用颇有些复杂,没有file_get_content那么简单,再就是需求 ...
最新文章
- samba 安装配置
- 拦截锚点修改url_浅谈URL跳转与Webview安全
- Luogu-P3205-HNOI2010-合唱队
- mysql中实现over partiton by,进行分组排序取topN
- MySQL幻读及解决方法
- 临床试验中lm是什么职位_据说!这是离临床试验成功最近的职位之一
- html5 dzzxjbd cn,UEditor实现单张图片上传至腾讯云(对象存储服务)功能(html5
- 图像局部特征(四)--FAST-ER角点检测子
- 极路由3C【C103B】刷breed再刷老毛子教程
- 解除网页复制限制的Chrome插件-SuperCopy
- BMZCTF-MISC(一) WriteUp
- php日期格式带T,php日期格式
- 基于S52单片机的温度测量与报警装置
- “C++”读作「C 加加」,为什么“C♯”不能读作「C 井」呢?
- Landscape - 使用Landscape Gizmo复制地形
- 200+款神器,全网最好用的免费在线工具,都在这里了!
- Viper快速配置与上手
- MySQL InnoDB如何解决幻读?
- java 汇编_大话+图说:Java 汇编指令——只为让你懂
- PTA-莫尔斯码(字符串,模拟)
热门文章
- [wordpress]更新插件时,免去FTP操作
- Hive系列(一)metastore的认证和授权
- Worktile 移动团队如何使用 C++ 完成 Worktile Pro 跨平台应用开发2
- Java 并发(JUC 包-05)
- Oracle 查询练习及答案
- Web前端——CSS层叠样式表
- sysadmin默认密码_从sysadmin过渡到DevOps工程师的案例
- 蓬勃发展的社区将帮助您的项目成功的6种方式
- :继续教育学习助手_我们自己做:教育的开放组织
- netflix 开源_手工3D打印机,Netflix上的开源等