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的服务器端数据交互相关推荐

  1. 开发安卓app游戏_「安卓APP开发流程」安卓APP如何开发的?

    21世纪,智能手机走进了人们的生活,现在的智能手机的操作系统基本分为两种,一种是IOS系统(苹果系统).安卓系统,其中,安卓系统是开源的,所以很多品牌商会讲安卓包装成自己的系统,但核心还是一样的,都是 ...

  2. 安卓app开发方案_「安卓APP开发流程」安卓APP如何开发的?

    21世纪,智能手机走进了人们的生活,现在的智能手机的操作系统基本分为两种,一种是IOS系统(苹果系统).安卓系统,其中,安卓系统是开源的,所以很多品牌商会讲安卓包装成自己的系统,但核心还是一样的,都是 ...

  3. win11怎么安装安卓app win11上安装安卓app的步骤教程

    微软win11最为亮眼的就是windows系统终于可以兼容原生安卓app了,但是很多安装了win11的朋友发现安装不了安卓app,今天小编来跟大家说说win11安装安卓app的步骤教程吧,更多win1 ...

  4. HTML一键打包APK工具_安卓app封装_H5打包安卓APP

    随着目前苹果Appstore审核越来越严格,每天平均上架1000个,下架3000个应用,想要上架苹果应用商店已经越来越困难了,反复修改审核上架,短则1-2周,长则几个月,并且游戏类应用上架目前极其困难 ...

  5. go android app下载地址,goPro安卓app下载

    goPro安卓app下载地址免费提供给大家,goPro是一款功能强大的运动摄像机软件,不仅支持极限拍照,还有视频直播功能,稳定性更强,更有超多拍摄技巧可以免费学习哦! 软件介绍 GoPro是一款功能非 ...

  6. Android APP开机启动,安卓APP开发自启动,安卓启动后APP自动启动 Android让程序开机自动运行APP

    让APP在安卓系统启动自动运行可以带来以下几个好处: 用户方便:当用户打开设备时,自动启动所需的APP可以让用户更方便地使用设备,不必手动打开APP. 提高用户黏性:自动启动APP可以让用户更快地开始 ...

  7. 使用app inventor快速开发安卓app(第二课,音乐播放器)

    1.进入网址:https://app.wxbit.com/,输入你的qq账号密码,完成登录. 2.点击素材列表,将所有的素材进行上传. 3.点击左侧组件列表中的Screen,设置最右侧的组件属性 图标 ...

  8. 使用app inventor快速开发安卓app(第一课,点击计数游戏)

    1.输入网址:https://www.wxbit.com/,点击跳转,点击右上角"开始使用App Inventor2 汉化版按钮" 2.点击左上角新建项目,填写你第一个项目的名称: ...

  9. 安卓连接mysql客户端_安卓客户端与mysql服务器端数据交互

    1.安卓客户端的配置(上传数据) package com.dlvtc.upphp; import java.io.IOException; import java.io.UnsupportedEnco ...

最新文章

  1. HDLBits 系列(15) 如何设计一个双边沿采样的电路?
  2. 皮一皮:据说这是昨天大多数人的写照...
  3. AI:2020年6月21日北京智源大会演讲分享之15:15-15:40黄萱菁教授《自然语言处理中的表示学习》
  4. Android Svn 中 Bin ,Gen 目录不进行版本控制
  5. 右键新建中增加新建.md文件
  6. springboot+shiro+redis项目整合
  7. 项目Wiki的选择和配置
  8. typedef用法(1)
  9. HUT-XXXX Strange display 容斥定理,线性规划
  10. Oracle的执行计划详解
  11. sp导出法线_SP导出贴图导Redshift渲染效果不同的问题
  12. 未解决:运行EtherCalc出错:Error: Cannot find module 'zappajs'
  13. 如何用python 巡检华为交换机?
  14. 移动端:纯html 基于 mescroll 插件实现上拉加载,下拉刷新,返回顶部
  15. im即时通讯开发:万人群聊技术方案实践
  16. 洛谷 P1192 台阶问题
  17. BZOJ5011 [Jx2017]颜色(洛谷P4065)
  18. 巨头秀区块链肌肉 原生军机会何在?
  19. GBase XDM C API 代码示例
  20. audio codec简介

热门文章

  1. struct interface_golang 避坑指南(1)interface 之坑多多 | 文末深圳 Meetup
  2. 如何在sql存储过程中打log_教你如何记录Entity Framework框架自动生成的SQL语句
  3. 内存管理器剖析:ptmalloc,windows,macOS
  4. 类 workbooks 的 open 方法无效_第十九章 Cach 命令大全 OPEN 命令
  5. **python基础函数(十一)
  6. maven项目在pom.xml中设置JDK编译版本
  7. matlab sunlink工具箱,FreeBSD handbook Unix Basics
  8. python高维数据的读取_索引访问高维数组_Python数据分析与科学计算基础篇1:NumPy图解,使抽象的数据具象为可触摸的图形_深度学习视频-51CTO学院...
  9. redis复制key的数据_Redis常见面试题
  10. 双飞翼HTML圣杯布局,关于圣杯布局与双飞翼布局的理解