android之客户端与webservice的json方式交互

合集下载

Android手机客户端与Web服务器的通信

Android手机客户端与Web服务器的通信

1.Android手机访问Web服务器大多数中间件技术开发人员熟悉如何用计算机浏览器访问互联网,浏览器的主要作用是给互联网的Web服务器提交数据、验证数据和解析显示数据。

其工作原理是通过Http协议.提交数据用GET或者POST方法,客户端的数据通过浏览器网页提交给web应用服务器,应用服务器通过Web页面接收各种不同类型数据,将数据通过服务器的Servlet子类Http Servlet对象提交给服务器端处理逻辑.服务器逻辑将接收到的数据按照客户端的要求在Web服务器端进行运算,再将运算的结果返回给客户端浏览器进行解析和显示。

这里关键是Web服务器端的Servlet.它是服务器和客户端交互据的服务器端端口,即所有客户端的数据都要通过Servlet提交给Web服务器.所有要返回给客户端的数据都要通过Web服务器端的Servlet响应给客户端。

在实际应用的服务器端,创建Servlet的子类对象HttpServlet (HttpServletRequest和 HttpServletResponse),分别用来接收客户端的数据和将数据返回给客户端。

现在的问题就在Android手机终端.如何能够把客户的数据通过手机界面提交给Web服务器? Android 手机终端访问Web服务器的技术架构是怎样的?又如何能够在手机终端把web服务器响应的数据按照服务器的不同数据类型恢复原型?这就是下面要解决的问题。

1.1 手机客户端向Web应用服务器发送请求信息以实际开发的Android手机终端登录功能为案例介绍如何利用Sun公司提供的 java 数据流和过滤流结合Android提供的API提取Web服务器端不同类型的数据。

1) 首先引用所需要的各种API在Android手机终端开发应用程序时.首先需要利用Google和Sun公司提供的必要类包(API),包括http 通信协议类org.apache.http,*消息类org.apache.http.Message.*数据流类java.io.*android.app.Activity等。

智能手机使用JSON与服务端交互架构思考与实现

智能手机使用JSON与服务端交互架构思考与实现

智能手机使用JSON与服务端交互架构思考与实现关于喧嚣求静网名:喧嚣求静个人博客:QQ:879081656说明:喧嚣之中求一点宁静,淡泊明志、宁静致远头像就不贴啦,写文章有点不好意思,怕写得不好,到时没脸见各位,哈哈申明:文章引用过网友的图片、博客,在此感谢,若有侵权请联系背景在开发手机客户端APP时,经常会与服务端交换数据。

数据交换接口通常会以XML格式和JSON两种常用格式返回数据,在传统web页面开发中,随着AJAX技术的兴起,JSON作为一种轻量级的数据交换格式,以其易于阅读和编写的优点,被应用到越来越多的项目中,转到手机客户端开发,这就自然而然的优先选择JSON作为与服务端的数据交换。

笔者在一线开发多年,接触到手机客户端和服务端开发,比较常用的数据交换格式即xml和json。

Xml:应用场景是为了兼容旧有系统和跨异构网络,降低接口开发成本,例如:接口是webservice服务接口Json:应用场景基本上是基于http协议开发接口,属于全新开发,接口开发成本稍微高。

为什么实际项目开发中,优先选择使用基于http协议开发接口返回json数据格式呢?1.手机端流量考虑,jsono数据格式相对xml节约流量,流量对于手机可是要用米的啊2.手机端处理性能考虑,基于http协议返回json数据,便于数据处理,速度快服务端架构思考场景一手机端和服务端接口业务描述:手机端用户发起http请求-》web服务器接收请求-》调用接口-》返回处理后的json数据-》手机端接收数据解析-》判断数据的正确性-》处理数据展现返回的json数据{“key”:”value”,……}对于场景一,简单实现了需求上的要求,但没有考虑到数据传输上的安全性问题及服务端处理时,有错误或异常的情况,所以笔都设想出第二种场景场景二手机端和服务端接口业务描述:手机端用户发起https请求-》web服务器接收请求-》调用接口-》返回处理后的json数据-》手机端接收数据解析-》判断数据的正确性-》处理数据展现返回的json数据{“flag”:true,”msg”:”接口成功”,“data”:{“key”:”value”,……}}说明:flag标识处理成功为true,否则为false,msg为处理消息说明,若flag=false,则为友好的错误信息data为数据部分,若flag=false,则为空json串{}服务端架构实现笔者选择的相关技术如下:Web 服务器:tomcat框架:spring mvc配置tomcat 服务器支持httpsSSL协议使用不对称加密技术实现双方之间信息的安全传递。

Android与服务器端数据交互(基于SOAP协议整合

Android与服务器端数据交互(基于SOAP协议整合

Android与服务器端数据交互(基于SOAP协议整合android+webservice)上一节中我们通过http协议,采用HttpClient向服务器端action 请求数据。

当然调用服务器端方法获取数据并不止这一种。

WebService也可以为我们提供所需数据,那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合到一起。

我们在PC机器java客户端中,需要一些库,比如XFire,Axis2,CXF 等等来支持访问WebService,但是这些库并不适合我们资源有限的android手机客户端,做过JAVA ME的人都知道有KSOAP这个第三方的类库,可以帮助我们获取服务器端webService调用,当然KSOAP 已经提供了基于android版本的jar包了,那么我们就开始吧:首先下载KSOAP包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar包然后新建android项目:并把下载的KSOAP包放在android项目的lib目录下:右键->build path->configure build path--选择Libraries,如图:以下分为七个步骤来调用WebService方法:第一:实例化SoapObject 对象,指定webService的命名空间(从相关WSDL文档中可以查看命名空间),以及调用方法名称。

如:View Code//命名空间private static final String serviceNameSpace="";//调用方法(获得支持的城市)private static final String getSupportCity="getSupportCity";//实例化SoapObject对象SoapObject request=new SoapObject(serviceNameSpace, getSupportCity);第二步:假设方法有参数的话,设置调用方法参数request.addProperty("参数名称","参数值");第三步:设置SOAP请求信息(参数部分为SOAP协议版本号,与你要调用的webService中版本号一致):View Code//获得序列化的EnvelopeSoapSerializationEnvelope envelope=new SoapSerializ ationEnvelope(SoapEnvelope.VER11);envelope.bodyOut=request;第四步:注册Envelope,(new MarshalBase64()).register(envelope);第五步:构建传输对象,并指明WSDL文档URL:View Code//请求URLprivate static final String serviceURL="";//Android传输对象AndroidHttpTransport transport=new AndroidHttpTrans port(serviceURL);transport.debug=true;第六步:调用WebService(其中参数为1:命名空间+方法名称,2:Envelope对象):View Codetransport.call(serviceNameSpace+getWeatherbyCityName, envel ope);第七步:解析返回数据:View Codeif(envelope.getResponse()!=null){return parse(envelope.bodyIn.toString()); }/*************** 解析XML* @param str* @return*/private static List<String> parse(String str){String temp;List<String> list=new ArrayList<String>();if(str!=null && str.length()>0){int start=str.indexOf("string");int end=stIndexOf(";");temp=str.substring(start, end-3);String []test=temp.split(";");for(int i=0;i<test.length;i++){if(i==0){temp=test[i].substring(7);}else{temp=test[i].substring(8);}int index=temp.indexOf(",");list.add(temp.substring(0, index));}}return list;}这样就成功啦。

基于JSON的Android移动终端与PHP及MySQL数据通信

基于JSON的Android移动终端与PHP及MySQL数据通信

基于JSON的Android移动终端与PHP及MySQL数据通信一、本文概述本文主要研究基于JSON的Android移动终端与PHP及MySQL之间的数据通信。

随着移动互联网的发展,移动终端在数据处理和通信方面的需求日益增长。

针对Android移动终端与远程Web Server的数据通信问题,本文选择JSON作为数据交互的方法。

JSON具有安全、快速、通用且数据通信量小的特点,能够有效提高移动终端与Web Server之间的数据传输效率,减少移动终端的请求响应时间和数据流量。

本文将对Android与PHP、MySQL数据通信的应用进行设计,提供设计思路和主要方法,并通过实验结果证明JSON方法在实际应用中的优越性。

二、基础与移动终端数据交互在现代移动应用开发中,数据交互是应用功能实现的核心。

Android移动终端与服务器之间的数据交互通常通过HTTP协议进行,而JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其简洁和易读性,在移动终端与服务器间的数据通信中得到了广泛应用。

JSON是一种完全独立于语言的文本格式,但是它的结构非常类似于JavaScript对象表示法。

JSON格式的数据由键值对构成,其中键(key)是字符串,值(value)可以是字符串、数字、数组、布尔值或其他JSON对象。

JSON对象表示为花括号{}包裹的键值对集合,而数组则表示为方括号[]包裹的值的有序集合。

在Android开发中,可以使用org.json库来处理JSON数据。

这个库提供了JSONObject和JSONArray等类来创建和操作JSON对象和数组。

通过这些类,开发者可以轻松地将JSON数据解析为Java对象,或者将Java对象转换为JSON格式的字符串,以便通过网络发送。

请求发送:移动终端通过HTTP请求向服务器发送数据或请求数据。

服务器处理:服务器接收到请求后,使用PHP处理请求,可能需要与MySQL数据库进行交互,获取或存储数据。

利用JSON实现客户端与服务器端通信

利用JSON实现客户端与服务器端通信

2018.04 V 电B 纗程技巧与维护
实用第一/ 智慧密集
Android客户端首先获取用户的位置生成JSON格式的数 据并将数据发送给服务器,服务器解析数据之后根据解 析结果提供的条件对数据库中的数据进行操作获得符合 条件的数据并封装为JSON格式返回至Android客户端。 Android端 通 过 org.json包解析数据并进行U I处理后呈 现 给 用 户 。 在 Android中 JSON数 组 格 式 可 以 用 JSONArray类处理。详细过程如图1 所示。
用 户 通 过 Android客户端完成 实 例 中 的 业 务 时 ,
基金项目:湖北省高等学校2017年省级大学生创新创 业 训 练 计 划 项 目 (No.201710488024)。 作者简介:金 鸣 (1998-),女 ,本科,研究方向:软件 工 程 ;袁 嵩 (1976-),男 ,副教授,研究方向:软件工 程;刘 荣 (1997-),女,本科,研究方向:软件工程。 收稿日期:2018-01-16
由于服务器端和客户端打交道的实际上是JSON协 议 ,而 JSON是跨语言的,所以一方面在服务器端可以 采用多种技术,如 JSP、Java等 ;另一方面,服务器端/ 客户端接口设计好之后,使用任意一种技术的服务器, 使 其 响 应 的 JSON格式可以提供多种客户端使用,如 Android客户端、基 于 JavaScript的网页客户端等[3]。
图 1 Android端与服务器端交互过程
具体代码实现如下: (1) Android端获取用户位置并向服务器端发送 请求; p「ivate B oolean「epo「tAdd「ess () th「ows I〇Exception, NETWo「kException {

Android平台与Web服务数据交互时运用Java反射机制解析数据的研究

Android平台与Web服务数据交互时运用Java反射机制解析数据的研究

Android平台与Web服务数据交互时运用Java反射机制解析数据的研究摘要:在时下流行的Android平台上研究应用Java反射机制,提高开发Android软件的灵活性、可扩展性,使得软件系统具有自适应能力,并在运行时随外部环境的变化而改变自身,实现程序的动态演进。

介绍了反射的概念和Java反射机制,对Android应用程序与Web服务进行的Xml数据交互时。

采用反射机制实现了域对象(Domain Object)信息的动态解析并封装成JavaBean类供应用程序使用,并给出了具体实现方法实例。

关键词:Java反射机制;Xml数据交互;Web服务;Android 平台0 引言随着移动技术的不断发展,Android平台在3G领域持续走红,不少传统Web应用系统逐步向移动应用方面发展。

从而加大了Web应用程序与Android应用程序之间的数据交互。

如何高效地将数据转化成程序可用数据,成为了Android应用与Web 应用之间的关键。

本文在以Xml数据格式交互数据的基础上结合Java反射机制和Android平台的Xml解析器(XmlPullParser),为减少代码的重复和增强代码的复用及提高数据交互的效率进行研究。

1 Java反射机制与Android平台Xml解析1.1 Java反射机制Java反射机制是在运行状态中,动态获取类的信息以及动态调用对象方法的机制。

这个机制允许程序在运行时通过调用Reflection APIs取得任何一个已知名称的Class的内部信息,既包括其修饰符、基类、所实现的接口等,也包括Fields和Methods以及Constructor的所有信息,并可于运行时改变fields 内容或调用methods。

Java反射的实现主要是依赖java. lang. reflect包所提供的类。

其中最经常使用的是如下三个类:(1) java. lang. reflect .Field类Field提供有关类或接口的单个域的信息。

android调用webservice接口获取信息

android调用webservice接口获取信息

android调⽤webservice接⼝获取信息我的有⼀篇博客上讲了如何基于CXF搭建webservice,service层的接⼝会被部署到tomcat上,这⼀篇我就讲⼀下如何在安卓中调⽤这些接⼝传递参数。

1.在lib中放⼊ksoap2的jar包并导⼊2.在xml 配置⽂件中加⼊:<!-- 访问⽹络的权限 --><uses-permission android:name="android.permission.INTERNET" />3.接下来就要通过代码调⽤借⼝了String WSDL_URI = "http://localhost:8080/WebService4/getNewIdPort?wsdl";//wsdl 的uriString namespace = "http://services.he.TSD/";//namespaceString methodName = "getNew";//要调⽤的⽅法名称// 创建HttpTransportSE对象HttpTransportSE ht = new HttpTransportSE(WSDL_URI);ht.debug = true;// 使⽤soap1.1协议创建Envelop对象SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);// 实例化SoapObject对象SoapObject object = new SoapObject(namespace, methodName);// 设置参数object.addProperty("arg0", "hhh");// 将SoapObject对象设置为SoapSerializationEnvelope对象的传出SOAP消息envelope.bodyOut = object;//由于是发送请求,所以是设置bodyOutenvelope.dotNet =false;envelope.setOutputSoapObject(object);try{// 调⽤webServiceht.call(null, envelope);System.out.println("回传的值:"+envelope.getResponse());}catch (Exception e) {e.printStackTrace();String msg=e.getMessage();System.out.println(msg);}4.若webservice接收不到android传来的值:(1)参数名不对(2).net的webservice要将envelope.dotNet =true,否则envelope.dotNet =false5.由于是部署到tomcat上的,为了同处于⼀个⽹段,要⼿机和电脑连⼀个wifi。

android中调用webservice总结

android中调用webservice总结

Android调用webservice(.net)总结在做本例中,主要进行了一下几个方面的学习:webservice的学习eclipse环境下搭建androidhttpurlconnection进行客户端与服务器通信方面的学习android端对读取的数据进行解析android端对解析后的数据进行显示的过程下面我们详细讲解这几个方面的过程和遇到的问题webservice的学习开始不懂什么是webservice ,在网上查阅了相关的信息之后,感觉webservice就是提供服务接口的,我们发布一个web服务,别人可以通过各种方式了获取我们服务。

我们只给用户(客户端)服务的说明(地址,需要传递的参数,服务的函数名称等等),用户只需根据相应的要求进行调用即可,相对较透明。

Web服务典型的是使用xml进行通讯,用户提出服务的要求,此要求被封装到一个xml文件中传输到服务器端,然后服务器端进行解析,获得客户端想要的服务信息,然后调用相应的服务接口获得数据,获得的数据封装成xml的数据流然后被传输到客户端,客户端接受到此数据流后应进行相应的解析(android中建议用xmlpull进行解析)。

对webservice暂时了解这些。

下面介绍相关的细节信息。

首先是webservice的创建,vs2010中没有直接创建webservice的项,但是我们可以间接地进行创建(可以选择 Empty Web Site/Application 模板,建立空的Web 网站或项目,在添加新项窗口中,你依然会发现Web Service 这个项模板),从而看出已经不建议使用 Web Services 建立新的服务,WCF 服务应该是新项目的首选(不熟悉嘿嘿)。

创建好webservice以后,我们就可以看到项目中有一个后缀为.xsmx的文件,我们想要的就是这个文件。

[WebService(Namespace = "/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][ponentModel.ToolboxItem(false)]// 若要允许使用 AJAX 从脚本中调用此Web 服t务请取消对下行的注释// [System.Web.Script.Services.ScriptService]public class WebService1 : System.Web.Services.WebService{[WebMethod]public string HelloWorld(){return"Hello World";}}这就是我们创建一个新的webservice后系统自动给我们创建的代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上面四条规则,就是J面积为16800平方公里,常住人口1600万人。上海市的面积为6400平方公里,常住人口1800万。"
写成json格式就是这样:
[ {"城市":"北京","面积":16800,"人口":1600}, {"城市":"上海","面积":6400,"人口":1800}
nnnnnnnnn //Like 是 JSONObject nnnnnnnnn "\"Like\" : {"+ nnnnnnnnnnn "\"Name\" : \"加内特\","+ nnnnnnnnnnn "\"Height\" : \"2.11cm\","+ nnnnnnnnnnn "\"Age\" : 35"+ nnnnnnnnn "},"+ nnnnnnn nnnnnnnnn //LikeList 就是一个 JSONObject nnnnnnnnn "\"LikeList\":" + nnnnnnnnnnnnn "{\"List\": " + nnnnnnnnnnnnn "["+ nnnnnnnnnnnnnnnnnnn //这里也是JSONObject nnnnnnnnnnnnnnnnn "{"+ nnnnnnnnnnnnnnnnnnn "\"Name\" : \"Rose\","+ nnnnnnnnnnnnnnnnnnn "\"Height\" : \"190cm\","+ nnnnnnnnnnnnnnnnnnn "\"Age\" : 23"+ nnnnnnnnnnnnnnnnn "},"+ nnnnnnnnnnnnnnnnn //这里也是JSONObject nnnnnnnnnnnnnnnnn "{"+ nnnnnnnnnnnnnnnnnnn "\"Name\" : \"科比\","+ nnnnnnnnnnnnnnnnnnn "\"Height\" : \"198cm\","+ nnnnnnnnnnnnnnnnnnn "\"Age\" : 33"+ nnnnnnnnnnnnnnnnn "}"+ nnnnnnnnnnnnn "]"+ nnnnnnnnnnnnn "}"+ nnnnnnnnn "}"; nnnnnnn nnnnnnn try { nnnnnnnnnnn JSONObject dataJson = new JSONObject(str); nnnnnnnnnnn Log.d(TAG, dataJson.getString("日期")); nnnnnnnnnnn nnnnnnnnnnn JSONObject nbaJson = dataJson.getJSONObject("Like"); nnnnnnn nnnnnnnnnnn Log.d(TAG, nbaJson.getString("Name")); nnnnnnnnnnn Log.d(TAG, nbaJson.getString("Height")); nnnnnnnnnnn Log.d(TAG, nbaJson.get("Age").toString()); nnnnnnnnnnn nnnnnnnnnnn JSONObject listJson = dataJson.getJSONObject("LikeList"); nnnnnnnnnnn JSONArray arrayJson = listJson.getJSONArray("List"); nnnnnnnnnnn nnnnnnnnnnn for(int i=0;i<arrayJson.length();i++) { nnnnnnnnnnnnnnn nnnnnnnnnnnnnnn JSONObject tempJson = arrayJson.optJSONObject(i); nnnnnnnnnnnnnnn nnnnnnnnnnnnnnn Log.d(TAG, tempJson.getString("Name")); nnnnnnnnnnnnnnn Log.d(TAG, tempJson.getString("Height")); nnnnnnnnnnnnnnn Log.d(TAG, tempJson.getString("Age").toString());nnn nnnnnnnnnnn } nnnnnnnnnnn nnnnnnnnnnn nnnnnnn } catch (JSONException e) { nnnnnnnnnnn System.out.println("Something wrong..."); nnnnnnnnnnn e.printStackTrace(); nnnnnnn } nnn } }
Json的规格非常简单,只用一个页面几百个字就能说清楚,而且Douglas Crockford声称这个规格永远不必升 级,因为该规定的都规定了。
1) 并列的数据之间用逗号(",")分隔。
2) 映射用冒号(":")表示。
3) 并列数据的集合(数组)用方括号("[]")表示。
4) 映射的集合(对象)用大括号("{}")表示。
android之客户端与webservice的json方式交互
数据传输量 同等的数据,Json需要传输的数据更少,xml会相对多些,对关注数据量的机器来说,这点比较关键。
扩展性, 虽然xml打着可扩展的名号,但是还没有xml可以扩展,json不可以扩展的。
编码难度 xml跨平台对接更容易出问题,虽然工具很多,但是想在跨平台轻易的调通就不是很容易,而json手工就能写出 来,编码就简单很多。
json是轻量级的,它易于使用,并且容易转换到Java对象;并且客户端脚本js容易获取,Android已经支持JSON 的标准库。 xml一般用在数据量很大的情况下或者数据结构复杂的时候一般用xml
在Android开发中有一项非常广泛的应用:Android项目获取另一个web项目的资源或者返回的数据。
本文获取web项目返回的JSON数据。Android应用解析JSON比XML性能要好,但有许多项目仍然采用的是XML。
json:
21世纪初,Douglas Crockford寻找一种简便的数据交换格式,能够在服务器之间交换数据。当时通用的数据交 换语言是XML,但是Douglas Crockford觉得XML的生成和解析都太麻烦,所以他提出了一种简化格式,也就是 Json。
]
如果事先知道数据的结构,上面的写法还可以进一步简化:
[ ["北京",16800,1600], ["上海",6400,1800]
]
java 定义示例:
n private String jsonData1="[{\"name\":\"renhaili\",\"age\":20}, {\"name\":\"zhouxiaodong\",\"age\":21}]"; n private String jsonData2="{\"name\":\"xiong\",\"age\":18}";
由此可以看到,json非常易学易用。所以,在短短几年中,它就取代xml,成为了互联网上最受欢迎的数据交换 格式。
第一种方便简单:
最近在用Android调用Web服务,开始准备用WebService来调用,用jws的WebService方式写好后发现Android调 用的时候很多问题不知道咋解决了,后来发现有一个更好的办法,就是采用HttpPost来与后台交互。
下面就说一下相关的JSON的操作:
不得不说,JSON 格式的确是非常美妙的,速度快而且简化了很多操作 在 Android 下,Android SDK 已经为我们封装好了整个与 JSON 有关的操作,使用非常方便
以下就是一个标准的 JSON 请求的实现过程:
HttpPost request = new HttpPost(url); // 先封装一个 JSON 对象 JSONObject param = new JSONObject(); param.put("name", "rarnu"); param.put("password", "123456"); // 绑定到请求 Entry StringEntity se = new StringEntity(param.toString()); request.setEntity(se); // 发送请求 HttpResponse httpResponse = new DefaultHttpClient().execute(request); // 得到应答的字符串,这也是一个 JSON 格式保存的数据 String retSrc = EntityUtils.toString(httpResponse.getEntity()); // 生成 JSON 对象 JSONObject result = new JSONObject( retSrc); String token = result.get("token");
相关文档
最新文档