安卓客户端通过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吧。