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 相关文章推荐
杏林同学录(二)
Oct 09 PHP
PHP_MySQL教程-第一天
Mar 18 PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 PHP
基于php 随机数的深入理解
Jun 05 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 PHP
PHP命令行与定时任务
Apr 01 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 session有效期问题
2009/04/26 PHP
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
js实现简易计算器功能
2019/10/18 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
利用Python计算KS的实例详解
2020/03/03 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
世界上最大的曲棍球商店:Pro Hockey Life
2017/10/30 全球购物
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
外贸销售员求职的自我评价
2013/11/23 职场文书
银行办理业务介绍信
2014/01/18 职场文书
驻村工作先进事迹
2014/08/14 职场文书
2014年环保局工作总结
2014/12/11 职场文书
刑事上诉状范文
2015/05/22 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
Mysql 如何查询时间段交集
2021/06/08 MySQL