app传输数据到php,安卓app客户端和使用php的服务器端数据交互
php擅长网页开发,对http协议支持很好,如果采用php作为服务器的后台开发语言和安卓客户端进行数据交互,使封装了http协议的httpclient这个jar包,可以轻松进行数据交互,不需要了解http协议的过多细节。
客户端使用httpclient与服务器数据交互是,类似在网页上提交一个表单,设定表单里各个input的名字,值,选择method为POST或GET,设置处理action的php文件,在安卓里也是类似的,把参数以键值对的形式存入一个参数列表,选择HTTP POST方法或者GET方法,
选择相应的类HttpPost或者HttpGet 并在构造方法传入php文件的url
Php文件接受到请求后,会把参数放到一个超全局变量 $_POST(请求用了POST方法)或者$_GET(请求用了GET方法)数组中,可以以参数名字为键访问参数的值。
在给出一个简单例子之前,先提醒一下,安卓xml配置文件中要加入INTERNET权限,而且httpclient调用相关逻辑代码不能在oncreate()方法里调用,要想调用一种解决方法是加代码强制执行,另一种是开启新的线程进行处理,本文采取后一种方式。
下面给出一个简单示例代码
安卓客户端
packagecom.example.c2sdatademo;
importjava.util.ArrayList;
importjava.util.List;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.TextView;
importcom.example.c2sdatademo.R;
importcom.example.c2sdatademo.R.layout;
//导入httpclient相关类
importorg.apache.http.HttpResponse;
importorg.apache.http.client.entity.UrlEncodedFormEntity;
importorg.apache.http.client.methods.HttpPost;
importorg.apache.http.impl.client.DefaultHttpClient;
importorg.apache.http.message.BasicNameValuePair;
importorg.apache.http.protocol.HTTP;
importorg.apache.http.util.EntityUtils;
publicclassMainActivityextendsActivity {
privateString strResult="";
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.activity_main);
//在新线程里发送请求并获得返回结果字符串,把值赋给strResult
newThread(newRequestThread()).start();
//点击按钮更新TextView的内容
finalTextView tv = (TextView) findViewById(R.id.tv);
Button b1 = (Button) findViewById(R.id.button1);
b1.setOnClickListener(newOnClickListener() {
publicvoidonClick(View v) {
tv.setText(strResult);
}
});
}
privateclassRequestThreadimplementsRunnable {
@SuppressWarnings("unchecked")
publicvoidrun() {
//因为选择POST方法,所以new HttpPost对象,构造方法传入处理请求php文件的url
HttpPost httpRequest = newHttpPost("http://localhost/test/c2sdatademo.php");
//POST方法的参数列表
ArrayList params = newArrayList();
//添加名为userName的参数,值为giantpoplar
params.add(newBasicNameValuePair("userName","giantpoplar"));
try{
//设置请求实体,设定了参数列表
httpRequest.setEntity(newUrlEncodedFormEntity(params,HTTP.UTF_8));
//执行请求,等待服务器返回结果
HttpResponse httpResponse = newDefaultHttpClient().execute(httpRequest);
//log出http返回报文头
Log.e("status",httpResponse.getStatusLine().toString());
//判断返回码是否为200,200表示请求成功
if(httpResponse.getStatusLine().getStatusCode() ==200) {
//获取返回字符串
strResult = EntityUtils.toString(httpResponse.getEntity(), HTTP.UTF_8);
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
@Override
publicbooleanonCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
returntrue;
}
@Override
publicbooleanonOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
intid = item.getItemId();
if(id == R.id.action_settings) {
returntrue;
}
returnsuper.onOptionsItemSelected(item);
}
}
布局文件中添加button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Click"/>
配置文件中加入所需权限
php服务器端
c2sdatademo.php
<?php
//以参数名userName访问值
$user_name=$_POST['userName'];
//echo 的结果会返回给安卓客户端,客户端程序里把下面echo
//的内容赋值给了变量strResult
echo"hello, ".$user_name."!";
?>
先运行服务器,客户端再发送请求,我的测试结果如下
TextView默认文本是“Hello world!”,点击button后就能看到保存在strResult中的服务器返回的字符串
点击之前
点击按钮查看服务器返回的字符串的值
app传输数据到php,安卓app客户端和使用php的服务器端数据交互相关推荐
- 开发安卓app游戏_「安卓APP开发流程」安卓APP如何开发的?
21世纪,智能手机走进了人们的生活,现在的智能手机的操作系统基本分为两种,一种是IOS系统(苹果系统).安卓系统,其中,安卓系统是开源的,所以很多品牌商会讲安卓包装成自己的系统,但核心还是一样的,都是 ...
- 安卓app开发方案_「安卓APP开发流程」安卓APP如何开发的?
21世纪,智能手机走进了人们的生活,现在的智能手机的操作系统基本分为两种,一种是IOS系统(苹果系统).安卓系统,其中,安卓系统是开源的,所以很多品牌商会讲安卓包装成自己的系统,但核心还是一样的,都是 ...
- win11怎么安装安卓app win11上安装安卓app的步骤教程
微软win11最为亮眼的就是windows系统终于可以兼容原生安卓app了,但是很多安装了win11的朋友发现安装不了安卓app,今天小编来跟大家说说win11安装安卓app的步骤教程吧,更多win1 ...
- HTML一键打包APK工具_安卓app封装_H5打包安卓APP
随着目前苹果Appstore审核越来越严格,每天平均上架1000个,下架3000个应用,想要上架苹果应用商店已经越来越困难了,反复修改审核上架,短则1-2周,长则几个月,并且游戏类应用上架目前极其困难 ...
- go android app下载地址,goPro安卓app下载
goPro安卓app下载地址免费提供给大家,goPro是一款功能强大的运动摄像机软件,不仅支持极限拍照,还有视频直播功能,稳定性更强,更有超多拍摄技巧可以免费学习哦! 软件介绍 GoPro是一款功能非 ...
- Android APP开机启动,安卓APP开发自启动,安卓启动后APP自动启动 Android让程序开机自动运行APP
让APP在安卓系统启动自动运行可以带来以下几个好处: 用户方便:当用户打开设备时,自动启动所需的APP可以让用户更方便地使用设备,不必手动打开APP. 提高用户黏性:自动启动APP可以让用户更快地开始 ...
- 使用app inventor快速开发安卓app(第二课,音乐播放器)
1.进入网址:https://app.wxbit.com/,输入你的qq账号密码,完成登录. 2.点击素材列表,将所有的素材进行上传. 3.点击左侧组件列表中的Screen,设置最右侧的组件属性 图标 ...
- 使用app inventor快速开发安卓app(第一课,点击计数游戏)
1.输入网址:https://www.wxbit.com/,点击跳转,点击右上角"开始使用App Inventor2 汉化版按钮" 2.点击左上角新建项目,填写你第一个项目的名称: ...
- 安卓连接mysql客户端_安卓客户端与mysql服务器端数据交互
1.安卓客户端的配置(上传数据) package com.dlvtc.upphp; import java.io.IOException; import java.io.UnsupportedEnco ...
最新文章
- HDLBits 系列(15) 如何设计一个双边沿采样的电路?
- 皮一皮:据说这是昨天大多数人的写照...
- AI:2020年6月21日北京智源大会演讲分享之15:15-15:40黄萱菁教授《自然语言处理中的表示学习》
- Android Svn 中 Bin ,Gen 目录不进行版本控制
- 右键新建中增加新建.md文件
- springboot+shiro+redis项目整合
- 项目Wiki的选择和配置
- typedef用法(1)
- HUT-XXXX Strange display 容斥定理,线性规划
- Oracle的执行计划详解
- sp导出法线_SP导出贴图导Redshift渲染效果不同的问题
- 未解决:运行EtherCalc出错:Error: Cannot find module 'zappajs'
- 如何用python 巡检华为交换机?
- 移动端:纯html 基于 mescroll 插件实现上拉加载,下拉刷新,返回顶部
- im即时通讯开发:万人群聊技术方案实践
- 洛谷 P1192 台阶问题
- BZOJ5011 [Jx2017]颜色(洛谷P4065)
- 巨头秀区块链肌肉 原生军机会何在?
- GBase XDM C API 代码示例
- audio codec简介
热门文章
- struct interface_golang 避坑指南(1)interface 之坑多多 | 文末深圳 Meetup
- 如何在sql存储过程中打log_教你如何记录Entity Framework框架自动生成的SQL语句
- 内存管理器剖析:ptmalloc,windows,macOS
- 类 workbooks 的 open 方法无效_第十九章 Cach 命令大全 OPEN 命令
- **python基础函数(十一)
- maven项目在pom.xml中设置JDK编译版本
- matlab sunlink工具箱,FreeBSD handbook Unix Basics
- python高维数据的读取_索引访问高维数组_Python数据分析与科学计算基础篇1:NumPy图解,使抽象的数据具象为可触摸的图形_深度学习视频-51CTO学院...
- redis复制key的数据_Redis常见面试题
- 双飞翼HTML圣杯布局,关于圣杯布局与双飞翼布局的理解