安卓端加载PHP,安卓客服端与PHP后台的通信

安卓客户端通过http协议,采用post的方式,访问php后台文件并传输数据过来,数据是key1=value1&key2=value2方式的字符串,但是后台采用$_POST方式却不能获取到数据。打印$_SERVER,发现数组里的HTTP_DATA元素的值就是POST过来的原生数据,使用了$_SERVER['HTTP_DATA']来获取值。PHP5.6版本以前可以使用$HTTP_RAW_POST_DATA来获取原生POST数据,而5.6版本弃用此方法,使用更好的file_get_contents("php://input")来获取原生数据。请问下为什么$_POST用于通信为什么会获取不到POST方式传过来的值?

回复讨论(解决方案)

因为缺少 Content-Type: application/x-www-form-urlencoded 头

所以 php 不会当做 post 预解析

实际应用时应根据 $_SERVER['REQUEST_METHOD'] 的值来做相应的处理

也可以直接判断 $_POST 是否为空

当然,file_get_contents("php://input") 后 parse_str 就废弃了 php 的与解析了

因为缺少 Content-Type: application/x-www-form-urlencoded 头

所以 php 不会当做 post 预解析

实际应用时应根据 $_SERVER['REQUEST_METHOD'] 的值来做相应的处理

也可以直接判断 $_POST 是否为空

当然,file_get_contents("php://input") 后 parse_str 就废弃了 php 的与解析了

恩,我就是通过file_get_contents("php://input") 后 parse_str的方式获取值的,那么Content-Type: application/x-www-form-urlencoded这个头是安卓客户端写的时候加上吗?

是的,以 post 方法传递数据时,这个头是必须的

不知道你是用什么工具做开发的,为什么没有自动给加上

是的,以 post 方法传递数据时,这个头是必须的

不知道你是用什么工具做开发的,为什么没有自动给加上

不知道,我做后台的,客户端是游戏做的,好像是用的Eliscpe吧。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值