php-curl(模拟post,设置header,接收json数据)
来源:互联网 发布:c语言标准库函数时间 编辑:程序博客网 时间:2024/05/19 18:15
CURL模拟POST请求
curl可以使用url的方式来模拟浏览器传输数据,是很有用的一个功能。
curl的操作可以分为4步:
1、初始化:curl_init()2、设置属性值:curl_setopt()3、执行:curl_exec()4、退出关闭:curl_close()
测试:
模拟一个php文件(2.php)向另一个php文件(3.php)发送post请求,并接收其返回值进行输出的过程。
post发送方(2.php)
<?php $url = 'http://localhost/3.php';$opt_data = 'name=BY2&age=999&sex=MAXMAN';$curl = curl_init(); //初始化curl_setopt($curl,CURLOPT_URL,$url); //设置urlcurl_setopt($curl,CURLOPT_HTTPAUTH,CURLAUTH_BASIC); //设置http验证方法curl_setopt($curl,CURLOPT_HEADER,0); //设置头信息curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); //设置curl_exec获取的信息的返回方式curl_setopt($curl,CURLOPT_POST,1); //设置发送方式为post请求curl_setopt($curl,CURLOPT_POSTFIELDS,$opt_data); //设置post的数据$result = curl_exec($curl);if($result === false){ echo curl_errno($curl); exit();}print_r($result);curl_close($curl);?>
post接收方(3.php)
<?php$name = $_POST['name'];$age = $_POST['age'];$sex = $_POST['sex'];if(empty($name) || empty($age) || empty($sex)){ return 'post value is empty';}$str = '欢迎来到北京,'.$name;$str .= ',你今年'.$age.'岁,真长寿';$str .= ',你是个强壮的'.$sex;echo $str;
测试验证时,如果出现错误,会打印错误信息。
如果测试过程中没有出现错误,会打印如下信息:
欢迎来到北京,BY2,你今年999岁,真长寿,你是个强壮的MAXMAN
curl中有一个方法curl_getinfo(),可以用来获取一些有用的信息,将这个方法加入到2.php中:
//插入到这个位置即可print_r($result);$info = curl_getinfo($curl);print_r($info);curl_close($curl);
再看一下现在的运行结果已经获取到了许多有用的信息:
欢迎来到北京,BY2,你今年999岁,真长寿,你是个强壮的MAXMANArray( [url] => http://localhost/3.php [content_type] => text/html [http_code] => 200 [header_size] => 169 [request_size] => 150 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0 [namelookup_time] => 0 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 27 [size_download] => 75 [speed_download] => 75 [speed_upload] => 27 [download_content_length] => 75 [upload_content_length] => 27 [starttransfer_time] => 0 [redirect_time] => 0 [certinfo] => Array ( ) [redirect_url] => )
Comments:如果浏览器显示乱码,“自定义及控制”->”更多工具”->”编码”->修改编码方式即可(chrome)。
CURL设置Authorization头信息&发送接收JSON数据
相关的部份代码片段:
$opt_data = json_encode($data);$header = array();$header[] = 'Authorization:'.$tmp;$header[] = 'Accept:application/json';$header[] = 'Content-Type:application/json;charset=utf-8';$curl = curl_init(); //初始化curl_setopt($curl,CURLOPT_URL,$url); //设置urlcurl_setopt($curl,CURLOPT_HTTPHEADER,$header);curl_setopt($curl,CURLOPT_POSTFIELDS,$opt_data);
在接收端,发现使用
使用如下方法:$GLOBALS['HTTP_RAW_POST_DATA'];
为什么会出现POST获取不到传送的数据的问题呢?因为$_POST只能接收文档类型为“Content-Type: application/x-www-form-urlencoded”格式提交的数据。
HTTP_RAW_POST_DATA是用来接收原始的POST数据的,只有在碰到未识别的MIME类型时才会被填充,所以使用它可以获取到上面代码POST的json数据。
1 0
- php-curl(模拟post,设置header,接收json数据)
- php中 curl模拟post发送json并接收json
- php中 curl模拟post发送json并接收json
- php中 curl模拟post发送json并接收json
- CURL模拟POST提交JSON数据
- php curl模拟post提交数据示例
- PHP CURL模拟POST提交XML数据
- php curl模拟post请求提交数据
- php CURL 模拟 POST 提交数据
- php cUrl 通过 http post json数据
- PHP接收POST数据,解析json数据
- PHP接收POST数据,解析json数据
- php接收post的json数据【转载】
- php接收post的json数据
- php接收post的json数据【转载】
- php服务端接收post的json数据
- php curl post 短信接口那边接收不到数据
- perl和curl 模拟post 发送json数据
- Qt在Windows下的三种编程环境搭建
- 在页面上生成二维码
- oracle锁
- Leetcode - String - 383. Ransom Note(水题)
- HDU-1062-Text Reverse(细节题)
- php-curl(模拟post,设置header,接收json数据)
- Android异步消息处理机制 深入理解Looper、Handler、Message三者关系
- canvas (笔记) 中级篇
- Swift怎么打印对象指针(地址)
- bzoj1858: [Scoi2010]序列操作
- JAVA 反射机制 抛出原异常
- [SDOI2008]沙拉公主的困惑
- 蓝鸥Unity开发基础——While和DoWhile语句学习笔记
- Junit4 简单教程(转载)