`

android访问php webservice简单一例

阅读更多
  如果是PHP做的服务端,要用android去访问,如何办?当然可以用REST,但也可以用点
笨的方法,比如PHP的服务端可以用JSON和XML提供返回的数据,而android端则可以用
APACHE的httpclient去访问.
  下面是一个例子,假设数据表中users表有如下字段(mysql):
idusers,UserName,FullName,加点数据.然后在服务端PHP,建立一个
webservice1.php,作用是直接返回服务端数据库的数据,如下:
<?php 
if(isset($_GET['user']) && intval($_GET['user'])) {


     $format = strtolower($_GET['format']) == 'json' ? 'json' : 'xml'; //xml is the default
  $user_id = intval($_GET['user']); //no default

  /* 连接数据库*/
  $link = mysql_connect('localhost','root','xxxxx') or die('Cannot connect to the DB');
  mysql_select_db('jsonandroid',$link) or die('Cannot select the DB');

     $query = "SELECT * FROM `users`;";
  $result = mysql_query($query,$link) or die('Errant query:  '.$query);

    $posts = array();
  if(mysql_num_rows($result)) {
    while($post = mysql_fetch_assoc($result)) {
      $posts[] = array('post'=>$post);
    }
  }

  /* json格式*/
  if($format == 'json') {
    header('Content-type: application/json');
    echo json_encode(array('posts'=>$posts));
  }
  else {
    header('Content-type: text/xml');
    echo '<posts>';
    foreach($posts as $index => $post) {
      if(is_array($post)) {
        foreach($post as $key => $value) {
          echo '<',$key,'>';
          if(is_array($value)) {
            foreach($value as $tag => $val) {
              echo '<',$tag,'>',htmlentities($val),'</',$tag,'>';
            }
          }
          echo '</',$key,'>';
        }
      }
    }
    echo '</posts>';
  }

  }
 ?> 



   则可以把数据表输出为JSON或者XML格式了.客户端的ANDROID调用:
try {
			
			HttpParams httpParams = new BasicHttpParams();
			HttpConnectionParams.setConnectionTimeout(httpParams,
					TIMEOUT_MILLISEC);
			HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
			
			HttpParams p = new BasicHttpParams();
			
			p.setParameter("user", "1");

			
			HttpClient httpclient = new DefaultHttpClient(p);
			String url = "http://10.0.2.2:8082/myphp/phpWebservice/webservice1.php?user=1&format=json";
			HttpPost httppost = new HttpPost(url);

			
			try {
				Log.i(getClass().getSimpleName(), "send  task - start");
				
				List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
						2);
				nameValuePairs.add(new BasicNameValuePair("user", "1"));
				httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
				ResponseHandler<String> responseHandler = new BasicResponseHandler();
				String responseBody = httpclient.execute(httppost,
						responseHandler);
				// 解析JSON返回的				JSONObject json = new JSONObject(responseBody);
				JSONArray jArray = json.getJSONArray("posts");
				ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

				for (int i = 0; i < jArray.length(); i++) {
					HashMap<String, String> map = new HashMap<String, String>();
					JSONObject e = jArray.getJSONObject(i);
					String s = e.getString("post");
					JSONObject jObject = new JSONObject(s);

					map.put("idusers", jObject.getString("idusers"));
					map.put("UserName", jObject.getString("UserName"));
					map.put("FullName", jObject.getString("FullName"));

					mylist.add(map);
				}
				Toast.makeText(this, responseBody, Toast.LENGTH_LONG).show();


  再搞个webservice2.php,该文件用来把客户端传送过去的JSON数据保存
<?php 

$json = file_get_contents('php://input');
$obj = json_decode($json);

//echo $json;


//保存数据库
$con = mysql_connect('localhost','root','XXX') or die('Cannot connect to the DB');
mysql_select_db('jsonandroid',$con);

  mysql_query("INSERT INTO `users` (UserName, FullName)
VALUES ('".$obj->{'UserName'}."', '".$obj->{'FullName'}."')");

mysql_close($con);
  $posts = array(1);
    header('Content-type: application/json');
    echo json_encode(array('posts'=>$posts));

?>


  而ANDROID端的,可以构造JSON,发送到webservice2.php

try {
			JSONObject json = new JSONObject();
			json.put("UserName", "test2");
			json.put("FullName", "1234567");
			HttpParams httpParams = new BasicHttpParams();
			HttpConnectionParams.setConnectionTimeout(httpParams,
					TIMEOUT_MILLISEC);
			HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
			HttpClient client = new DefaultHttpClient(httpParams);
									String url = "http://10.0.2.2:8082//myphp/phpWebservice/webservice2.php";

			HttpPost request = new HttpPost(url);
			request.setEntity(new ByteArrayEntity(json.toString().getBytes(
					"UTF8")));
			request.setHeader("json", json.toString());
			HttpResponse response = client.execute(request);
			HttpEntity entity = response.getEntity();
			
			if (entity != null) {
				InputStream instream = entity.getContent();

				String result = RestClient.convertStreamToString(instream);
				Log.i("Read from server", result);
				Toast.makeText(this,  result,
						Toast.LENGTH_LONG).show();
			}



   这样,就可以把ANDROID发送的数据保存到服务端了
3
1
分享到:
评论

相关推荐

    Android调用Java WebService的实现方法.pdf

    在Android开发中,获取网络上的数据是一种常见需求。文中提到Android访问网络数据有多种方式,主要包括两种方法:一种是基于Http协议的数据获取方法,另一种是基于SAOP协议的数据获取方法。这两者各有优缺点,前者...

    Android访问phpwebservice简单一例.doc

    这里我们讨论的是一个简单的例子,展示如何使用Android访问由PHP编写的Web服务。 首先,后端PHP代码(如`webservice1.php`)负责从MySQL数据库中检索数据。当Android客户端发送一个GET请求时,PHP脚本接收请求参数...

    手机充值接口源代码 webservice

    在本例中,手机充值接口作为Web Service对外提供服务,接收客户端发送的请求,处理充值逻辑,并返回相应的结果。 1. **Web Service设计**: - WSDL(Web Services Description Language):定义了服务的接口,包括...

    基于Comsol的超材料吸收器时域耦合模理论及其损耗提取方法研究 光子学

    内容概要:本文详细介绍了利用COMSOL软件进行超材料吸收器时域耦合模理论仿真的方法,重点在于如何通过仿真提取辐射损耗和欧姆损耗。文中首先概述了超材料吸收器的基本概念及其在光子学中的应用前景,接着阐述了时域耦合模理论的基础知识,包括不同模式间的耦合机制。随后,文章展示了具体的仿真建模流程,涵盖材料属性设定、边界条件配置、光源定义等方面。最后,通过对仿真结果的细致分析,成功提取出了辐射损耗和欧姆损耗,并讨论了这些数据对优化超材料吸收器设计的意义。 适合人群:从事光子学、超材料研究的专业人士,尤其是那些希望深入了解超材料吸收器工作原理及损耗机理的研究人员和技术开发者。 使用场景及目标:①帮助研究人员更好地理解和掌握超材料吸收器的工作原理;②为实际工程应用(如太阳能电池、隐身技术)提供理论支持和技术指导;③促进新型高效、低损耗超材料吸收器的设计与开发。 其他说明:文章不仅提供了详细的理论解析,还附带了MATLAB代码片段,便于读者复现实验过程并进一步开展相关研究。

    基于非对称纳什谈判的多微网电能共享与P2P交易优化策略——隐私保护与低碳调度 - 隐私保护 2025版

    内容概要:本文详细介绍了基于非对称纳什谈判理论的多微网电能共享与P2P交易优化策略。通过建立多微网电能共享合作运行模型,将问题分解为微网联盟效益最大化和合作收益分配两个子问题,并采用交替方向乘子法(ADMM)进行分布式求解。此外,引入非线性能量映射函数量化各参与主体的贡献,确保合作收益的公平分配。同时,考虑到电转气和碳捕集设备,实现了低碳调度,保护了各主体的隐私。 适合人群:从事电力系统优化、智能电网研究的专业人士,特别是对微网电能共享和P2P交易感兴趣的科研人员和技术开发者。 使用场景及目标:适用于需要优化多微网电能共享和P2P交易的研究项目,旨在实现电能的高效共享、合理分配以及低碳调度。目标是在保障隐私的前提下,提升微网间的合作效率和经济效益。 其他说明:文中提供的MATLAB代码经过精心设计,注释详尽,便于理解和应用。代码涵盖了从模型建立到求解的完整流程,有助于研究人员快速上手并应用于实际项目中。

    网上商城软件系统全面测试方案

    软件测试在软件工程领域占据着极为关键的地位,堪称软件质量的守护屏障。经过软件测试实践的深度锻炼,能够深入领会软件测试及其流程的核心方法与技术,精准掌握黑盒测试和白盒测试中测试用例的精心设计技巧。此外,还能借此显著提升对复杂程序的编写水平,为未来投身实际软件测试岗位以及开展更深入的研究筑牢坚实的理论根基和实践基础。 本测试报告聚焦于网上购物系统项目,旨在详细阐述测试活动的全流程。报告的核心目标是全面总结测试阶段的工作成果,深入剖析测试结果,精准判断系统是否满足既定需求。该报告预期的主要参考对象为项目的开发团队成员。

    Matlab源代码:基于MPC的储能系统优化运行策略 SCI论文源代码

    文献链接:https://www.sciencedirect.com/science/article/pii/S2352484725001349 Tips: 代码运行平台为 matlab+GAMS, 使用Cplex求解

    AI开发四大核心模块详解 (完整代码见附件)

    AI开发四大核心模块详解 (完整代码见附件)

    第5章SCADA系统.ppt

    第5章SCADA系统.ppt

    低速大转矩直驱力矩电机方案:为矿山机械等设备提供高效动力

    内容概要:本文详细介绍了低速大转矩直驱力矩电机方案,旨在满足矿山机械等重载设备对高效动力的需求。该电机方案具有额定转速45rpm、额定功率120kW的特点,采用了分数槽集中绕组方案和切向式磁路结构,从而在低速状态下能输出大转矩。此外,该方案还实现了低谐波低转矩脉动,确保了电机的运行平稳性和可靠性,并已实现系列化量产,提供多种规格的产品。 适合人群:从事矿山机械、冶金、化工等领域设备设计、制造和维护的技术人员及工程师。 使用场景及目标:适用于需要高效、稳定、可靠动力源的矿山机械、冶金、化工、造纸、印刷等重载设备的驱动系统。目标是提升设备的整体性能和工作效率。 其他说明:随着工业自动化和智能化水平的提高,该电机方案在未来有望在更多领域得到广泛应用。

    YOLOv8-PyQt5-GUI-pred-number-ops-7128分析和识别数字操作相关的图像-检测数学教学和研究+数据集+训练好的模型.zip

    YOLOv8-PyQt5-GUI-pred-number-ops_7128分析和识别数字操作相关的图像-检测数学教学和研究+数据集+训练好的模型包含pyqt可视化界面,有使用教程 1. 内部包含标注好的目标检测数据集,分别有yolo格式(txt文件)和voc格式标签(xml文件), 共7128张图像, 已划分好数据集train,val, test,并附有data.yaml文件可直接用于yolov5,v8,v9,v10,v11,v12等算法的训练; 2. yolo目标检测数据集类别名:number-ops(数字操作),包括 0(零)、1(一)、2(二)、3(三)、4(四)、5(五)、6(六)、7(七)、8(八)、9(九)、div(除法)、eqv(等值)、minus(减法)、mult(乘法)、plus(加法)等 3. yolo项目用途:分析和识别数字操作相关的图像,用于数学教学和研究 4. 可视化参考链接:https://blog.csdn.net/weixin_51154380/article/details/126395695?spm=1001.2014.3001.5502

    excel+annotation+excel上传下载

    excel+annotation+excel上传下载

    第一章-计算机基础知识.ppt

    第一章-计算机基础知识.ppt

    工业自动化中昆仑通态触摸屏与汇川变频器无线通讯技术的应用及实现 - 工业自动化

    内容概要:本文介绍了昆仑通态触摸屏与三台汇川变频器通过无线通讯模块实现远距离控制的成功案例。系统已在实际工业环境中稳定运行一年,展示了良好的可靠性和性能。文中详细描述了系统的组成、硬件连接、软件编程、无线通讯配置以及调试优化过程。此外,还讨论了该系统的潜在扩展能力,理论上支持最远达1公里的通讯距离。 适合人群:从事工业自动化、控制系统集成的技术人员和工程师。 使用场景及目标:适用于需要远距离控制设备的工业环境,如大型厂房、矿山等。主要目标是提高生产效率,减少布线成本,增强系统的灵活性和稳定性。 其他说明:该案例不仅提供了具体的技术实现细节,还分享了一年的实际运行经验,有助于读者更好地理解和应用相关技术。

    YOLOv8-PyQt5-GUI-pred-cables-nl42k-6830检测和识别电缆的类型和状态-检测电力和通信工程+数据集+训练好的模型.zip

    YOLOv8-PyQt5-GUI-pred-cables-nl42k_6830检测和识别电缆的类型和状态-检测电力和通信工程+数据集+训练好的模型包含pyqt可视化界面,有使用教程 1. 内部包含标注好的目标检测数据集,分别有yolo格式(txt文件)和voc格式标签(xml文件), 共6830张图像, 已划分好数据集train,val, test,并附有data.yaml文件可直接用于yolov5,v8,v9,v10,v11,v12等算法的训练; 2. yolo目标检测数据集类别名:cables(电缆),包括 Antenne(天线)、BBS(基带站)、BFU(基带单元)、Batterie(电池)、DDF(数字配线架)、PCF(电源控制单元)、PCU_AC(交流电源单元)、PCU_DC(直流电源单元)、PDU(电源分配单元)、PSU(电源供应单元)、RBS(无线基站)等 3. yolo项目用途:检测和识别电缆的类型和状态,用于电力和通信工程 4. 可视化参考链接:https://blog.csdn.net/weixin_51154380/article/details/126395695?spm=1001.2014.3001.5502

    No.1161:基于S7-200 PLC和MCGS组态的调试控制系统 - 含解释的梯形图程序、接线图原理图、IO分配及组态画面

    内容概要:本文详细介绍了基于S7-200 PLC和MCGS组态构建的调试控制系统。首先阐述了系统的三层架构,即底层的S7-224XP PLC用于信号采集,中间层通过PPI协议连接MCGS触摸屏,顶层利用MCGS组态软件进行监控。接着展示了具体的梯形图程序实例,如电机启停控制逻辑,强调了启停自锁机制、定时器的应用以及过载保护的设计理念。随后讲解了MCGS组态中的人机交互部分,特别是动态效果脚本的编写方法及其优化的数据传输方式。最后分享了一些实际调试过程中遇到的问题及解决方案,突出了系统的灵活性和扩展性。 适用人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和MCGS组态感兴趣的从业者。 使用场景及目标:适用于需要理解和掌握S7-200 PLC与MCGS组态集成应用的学习者;帮助他们学会搭建完整的工业自动化控制系统,从硬件连接到软件配置,再到具体的功能实现,最终达到能够独立完成类似项目的水平。 其他说明:文中不仅提供了理论知识,还结合了丰富的实践经验,使读者能够在实践中更好地理解和运用所学的知识。同时,对于一些常见的错误进行了提示,并给出了有效的解决办法。

    电子商务支付及安全概述.pptx

    电子商务支付及安全概述.pptx

    深度学习DeepSeek模型本地部署教程:环境搭建、量化优化与服务化部署指南

    内容概要:本文详细介绍了 DeepSeek 模型在本地环境下的部署流程,涵盖环境准备、模型下载、量化部署、推理代码和服务化部署等多个方面。首先,需要安装必要的依赖库,建议使用 Python 3.9 并创建独立的虚拟环境。接着,通过 Hugging Face 的 transformers 库下载模型,提供具体代码示例,包括模型的保存方式。对于 GPU 内存有限的情况,介绍了 8 位或 4 位量化的应用方法,以减少内存占用。此外,还提供了简单的文本生成示例代码,以及使用 FastAPI 将模型部署为 API 服务的方法。最后,针对常见的硬件资源不足、CUDA 版本不兼容、模型下载失败、依赖库版本冲突、量化相关错误、推理速度过慢、中文支持问题、服务部署错误、模型输出不符合预期和许可证限制等问题,给出了详细的解决方案。; 适合人群:具有一定深度学习基础,对模型本地部署感兴趣的开发者和技术人员。; 使用场景及目标:①掌握 DeepSeek 模型的本地部署流程;②解决部署过程中可能出现的各种问题;③实现模型的量化以适应低内存环境;④将模型部署为 API 服务,便于集成到其他系统中。; 阅读建议:此教程不仅提供了详细的代码示例,还涵盖了常见问题及其解决方案,因此在学习过程中应结合实际操作进行实践,并根据自己的硬件条件选择合适的部署方案。

    电子商务基于AI技术的消费者行为分析与电商平台优化:从数据清洗到智能推荐系统设计

    内容概要:本文深入剖析了消费者行为模式及其在电商平台上的应用,重点介绍了人工智能技术在电商领域的应用现状和发展前景。文中详细探讨了消费者行为数据的采集、特征提取、模型构建及应用验证,包括推荐系统、用户画像、情感分析等具体应用场景。通过分析国内外电商平台的数据,展示了AI技术如何助力精准营销、优化用户体验及供应链管理。此外,文章还探讨了数据隐私、算法偏见等伦理问题,并对未来研究方向提出了展望。 适用人群:对电商运营、市场营销及人工智能感兴趣的从业者和研究人员。 使用场景及目标:①了解AI技术在电商领域的具体应用,如推荐系统、用户画像构建和情感分析;②掌握数据清洗、特征工程、模型训练等技术细节;③探索AI技术在提升运营效率、优化用户体验等方面的实际效果;④理解AI技术带来的隐私和伦理挑战,并寻求解决方案。 其他说明:本文不仅提供了理论基础和技术框架,还结合了实际案例进行了深入分析,旨在为读者提供全面的认识。文章强调了AI技术在电商领域的重要性,同时也指出了当前存在的问题和未来的研究方向,鼓励读者关注数据隐私保护和算法公平性等问题。

Global site tag (gtag.js) - Google Analytics