php通过header发送自定义数据方法


Posted in PHP onJanuary 18, 2018

本文将介绍如何通过header发送自定义数据。发送请求时,除了可以使用$_GET/$_POST发送数据,也可以把数据放在header中传输过去。

发送header:

我们定义了三个参数,tokenlanguageregion,放入header发送过去

<?php
$url = 'http://www.example.com';
$header = array('token:JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU','language:zh','region:GZ');
$content = array(
    'name' => 'fdipzone'
);
$response = tocurl($url, $header, $content);
$data = json_decode($response, true);
echo 'POST data:';
echo '<pre>';
print_r($data['post']);
echo '</pre>';
echo 'Header data:';
echo '<pre>';
print_r($data['header']);
echo '</pre>';
/**
 * 发送数据
 * @param String $url   请求的地址
 * @param Array $header 自定义的header数据
 * @param Array $content POST的数据
 * @return String
 */
function tocurl($url, $header, $content){
  $ch = curl_init();
  if(substr($url,0,5)=='https'){
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在
  }
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
  $response = curl_exec($ch);
  if($error=curl_error($ch)){
    die($error);
  }
  curl_close($ch);
  return $response;
}
?>

接收header

我们可以在$_SERVER中获取header数据,自定义的数据都是使用HTTP_作为前缀的,所以可以把HTTP_前缀的数据读出。

<?php
$post_data = $_POST;
$header = get_all_headers();
$ret = array();
$ret['post'] = $post_data;
$ret['header'] = $header;
header('content-type:application/json;charset=utf8');
echo json_encode($ret, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
/**
 * 获取自定义的header数据
 */
function get_all_headers(){
  // 忽略获取的header数据
  $ignore = array('host','accept','content-length','content-type');
  $headers = array();
  foreach($_SERVER as $key=>$value){
    if(substr($key, 0, 5)==='HTTP_'){
      $key = substr($key, 5);
      $key = str_replace('_', ' ', $key);
      $key = str_replace(' ', '-', $key);
      $key = strtolower($key);
      if(!in_array($key, $ignore)){
        $headers[$key] = $value;
      }
    }
  }
  return $headers;
}
?>

输出:

POST data:
Array
(
  [name] => fdipzone
)
Header data:
Array
(
  [token] => JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU
  [language] => zh
  [region] => GZ
)

以上这篇php通过header发送自定义数据方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP5与MySQL数据库操作常用代码 收集
Mar 21 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
Jun 17 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
PHP处理Json字符串解码返回NULL的解决方法
Sep 01 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
Oct 21 PHP
php实现两个数组相加的方法
Feb 17 PHP
php递归遍历删除文件的方法
Apr 17 PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 PHP
php实现产品加入购物车功能(1)
Jul 23 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
PHP时间处理类操作示例
Sep 05 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 #PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 #PHP
PHP获取二叉树镜像的方法
Jan 17 #PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 #PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 #PHP
PHP实现找出链表中环的入口节点
Jan 16 #PHP
详解thinkphp中的volist标签
Jan 15 #PHP
You might like
强烈推荐:php.ini中文版(2)
2006/10/09 PHP
深入解析php中的foreach函数
2013/08/31 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
BootStrap modal模态弹窗使用小结
2016/10/26 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
python实现画循环圆
2019/11/23 Python
python怎么判断素数
2020/07/01 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
行政总监岗位职责
2013/12/05 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
新娘婚礼致辞
2015/07/27 职场文书
新学期主题班会
2015/08/17 职场文书