安卓客户端与PHP后台通信
2015-12-15 11:32
585 查看
安卓端通过http协议的post方式访问服务器php后台,并传送数据过来,数据格式是key1=value1&key2=value2·····的形式,安卓端代码形式:
服务器端PHP通过
使用以上方法成功实现了与客户端的通信和数据双向传输,作为一个新手,对$_POST为什么不能正常获取数据还是不理解,如果有大神路过看见,还望能指点一二。
public static String doPost(String url, Map<String, String> params) { String response = null; HttpClient client = new HttpClient(); HttpMethod method = new PostMethod(url); for (Iterator it = params.entrySet().iterator(); it.hasNext();) { } //设置Http Post数据 if (params != null) { HttpMethodParams p = new HttpMethodParams(); for (Map.Entry<String, String> entry : params.entrySet()) { p.setParameter(entry.getKey(), entry.getValue()); } method.setParams(p); } try { client.executeMethod(method); if (method.getStatusCode() == HttpStatus.SC_OK) { response = method.getResponseBodyAsString(); } } catch (IOException e) { log.error("执行HTTP Post请求" + url + "时,发生异常!", e); } finally { method.releaseConnection(); } return response; }
服务器端PHP通过
$_POST方式确取不到传递过来的值,
$_POST用来获取通信数据,有时候会出现状况,自己就遇到了,调试了很久,打印出
$_SERVER,发现可以获取到http协议传送的所有信息,在数据流里找到了HTTP_DATA元素值就是客户端POST的原生数据,PHP版本5.6之前,有一个方法
$HTTP_RAW_POST_DATA可以获取POST方式的原生数据,但是5.6版本就已经弃用了这个方法,改为了
file_get_contents("php://input")来代替使用
$HTTP_RAW_POST_DATA,因为
$HTTP_RAW_POST_DATA还需要特殊的php.ini配置,另外php://input还可以在未申明enctype=”multipart/form-data”的情况下使用。5.6版本前也可以用php://input方法,此方法为只读形式,5.6以前版本只能读取一次。因此重新采用了一下方式来重读数据:
if(empty($_POST)){ $str = file_get_contents("php://input"); parse_str($str,$arraypush); file_put_contents('input.txt',$str); }else{ $arraypush = $_POST; file_put_contents('input.txt',json_encode($arraypush)); }
使用以上方法成功实现了与客户端的通信和数据双向传输,作为一个新手,对$_POST为什么不能正常获取数据还是不理解,如果有大神路过看见,还望能指点一二。
相关文章推荐
- ContentProvider原理及实例(一)
- php提交post和get的几种方式
- 收获之旅中的心路历程
- 我们为什么要迁移PHP到HHVM
- 学习中的蜕变
- PHP 虚拟主机配置
- Windows7上开启ftp服务器功能
- php获取apk包信息的方法
- php设置cookie,在js中如何获取
- 实用的php清除html,php去除空格与换行,php清除空白行和换行,提取页面纯文本
- php中json_decode及foreach使用总结
- ThinkPHP 跨控制器页面跳转 官方文档 未讲清楚
- Laravel artisan 命令工具
- PHP工程师VIM配置分享
- FragmentPagerAdapter和FragmentStatePagerAdapter的区别
- php 多线程 pthreads扩展
- php soap实例讲解
- SOAP通信详解实例[PHP]
- PHP处理超时方法
- PHP SOAP模块的使用方法:NON-WSDL模式