zoukankan      html  css  js  c++  java
  • 关于PHP接收HTTP模拟POST传JSON格式时$_POST为空的问题

    编写项目时需要将数据转换成json格式的字符串,并通过post传参传给后台,但在后台接收数据时发现$_POST参数为空 

    头部为:

    curl_setopt($ci, CURLOPT_HEADER, 0);
    curl_setopt($ci, CURLOPT_HTTPHEADER,array('Content-Type: application/json; charset=utf-8','Content-Length:' . strlen($tmpdatastr)));

    针对这个问题在网上查询资料发现,仅在 Coentent-Type的值为application/x-www-data-urlencode和multipart/form-data时,php才会将http请求数据包中的数据填进$_POST中,

    其他类型的Coentent-Type,php不能自动识别,会将相应的数据填入变量$HTTP_RAW_POST_DATA中.

    所以可以使用两种方法在这种情况下获取数据

    1.通过$HTTP_RAW_POST_DATA获取

    $post_data = $GLOBALS['HTTP_RAW_POST_DATA'];

    但需要修改相应的php.ini指令

    2.通过php://input获取(建议使用这种方法 php://input数据总是和$HTTP_RAW_POST_DATA相同,但php://input更凑效且不需要修改php.ini)

    $post_data = file_get_contents("php://input"); 

    By Hgq

  • 相关阅读:
    requests模块
    Flask框架 之 上下文管理前戏
    Flask框架 之 学生管理分析
    Flask框架 之 路由和视图详解
    数据库连接池DBUtils
    C++中endl和cout语句
    Linux如何在一个文件中写入内容
    C++常量
    Linux重启命令
    Linux命令1
  • 原文地址:https://www.cnblogs.com/widgetbox/p/8399277.html
Copyright © 2011-2022 走看看