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 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
NO3第三帝国留言簿制作过程
Oct 09 PHP
php基础知识:类与对象(1)
Dec 13 PHP
php从数组中随机抽取一些元素的代码
Nov 05 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
PHP遍历目录文件的常用方法小结
Feb 03 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
Jun 10 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
PDO实现学生管理系统
Mar 21 PHP
PHP中类与对象功能、用法实例解读
Mar 27 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
PHP abstract与interface之间的区别
2013/11/11 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
详解JS函数重载
2014/12/04 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
python 输出上个月的月末日期实例
2018/04/11 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
Python猜数字算法题详解
2020/03/01 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
PyTorch安装与基本使用详解
2020/08/31 Python
大学辅导员事迹材料
2014/02/05 职场文书
百年校庆节目主持词
2014/03/27 职场文书
销售队伍口号
2014/06/11 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
街道社区活动报告
2015/02/05 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
MySQL基础(二)
2021/04/05 MySQL
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB
redis 解决库存并发问题实现数量控制
2022/04/08 Redis