android与服务端的服务架构,整体设计概念,模仿了ibatis的早期设计理念。
提供一个关于如何android解析webservice相应报文的解析工具,我大致概括了下,应该能够大致满足大家的需要,主要参考了ksoap2框架的api,进行再一次的封装。
package cc.ewell.mcs.portal.engine.parse; import java.util.ArrayList; import java.util.List; import org.ksoap2.serialization.SoapObject; public class KSoap2Utils { private static Object property; /** * extract an int value from the soap response * * @param response * @param id * @return */ public static int getInt(SoapObject response, String id) { String property = response.getProperty(id).toString(); return Integer.valueOf(property).intValue(); } public static long getLong(SoapObject response, String id) { String property = response.getProperty(id).toString(); return Long.valueOf(property); } public static short getShort(SoapObject response, String id) { String property = response.getProperty(id).toString(); return Short.valueOf(property); } public static byte getByte(SoapObject response, String id) { String property = response.getProperty(id).toString(); return Byte.valueOf(property); } /** * * * @param response * @param id * @return */ public static float getFloat(SoapObject response, String id) { String property = response.getProperty(id).toString(); return Float.valueOf(property); } public static double getDouble(SoapObject response, String id) { String property = response.getProperty(id).toString(); return Double.valueOf(property); } /** * * * @param response * @param id * @return */ public static boolean getBoolean(SoapObject response, String id) { String property = response.getProperty(id).toString(); return Boolean.valueOf(property); } /** * * * @param response * @param id * @return */ public static String getString(SoapObject response, String id) { if (response.getProperty(id) != null) return response.getProperty(id).toString(); else return "null"; } /** * * * @param response * @param theClass * @return */ public static Soapeabilisable getObject(SoapObject response, Soapeabilisable theClass) { return theClass.fromSoapResponse(response); } /** * * * @param response * @param theClass * @return */ public static List<Soapeabilisable> getArray(List<SoapObject> soapObjects, Soapeabilisable theClass) { List<Soapeabilisable> rets = new ArrayList<Soapeabilisable>( soapObjects.size()); for (SoapObject record : soapObjects) { rets.add(getObject(record, theClass)); } return rets; } /** * * * @param response * @param theClass * @return */ public static List<Soapeabilisable> getList(SoapObject response, Soapeabilisable theClass) { int recordsCount = response.getPropertyCount(); List<Soapeabilisable> rets = new ArrayList<Soapeabilisable>(); for (int i = 0; i < recordsCount; i++) { SoapObject record = (SoapObject) response.getProperty(i); rets.add(getObject(record, theClass)); } return rets; } /** * * * @param response * @param theClass * @return */ public static Soapeabilisable[] getArray(SoapObject response, Soapeabilisable theClass) { int recordsCount = response.getPropertyCount(); Soapeabilisable[] rets = new Soapeabilisable[recordsCount]; for (int i = 0; i < recordsCount; i++) { SoapObject record = (SoapObject) response.getProperty(i); rets[i] = getObject(record, theClass); } return rets; } /** * * * @param response * * @return Object[] */ public static Object[] getObjectArray(SoapObject response) { int recordsCount = response.getPropertyCount(); Object[] rets = new Object[recordsCount]; for (int i = 0; i < recordsCount; i++) { Object record = response.getProperty(i); rets[i] = record; } return rets; } public static String[] getStringArray(SoapObject response) { int recordsCount = response.getPropertyCount(); String[] rets = new String[recordsCount]; for (int i = 0; i < recordsCount; i++) rets[i] = response.getProperty(i).toString(); return rets; } public static boolean[] getBooleanArray(SoapObject response) { int recordsCount = response.getPropertyCount(); boolean[] rets = new boolean[recordsCount]; for (int i = 0; i < recordsCount; i++) rets[i] = ((Boolean) response.getProperty(i)).booleanValue(); return rets; } public static int[] getIntegerArray(SoapObject response) { String property = null; int recordsCount = response.getPropertyCount(); int[] rets = new int[recordsCount]; for (int i = 0; i < recordsCount; i++) { property = response.getProperty(i).toString(); rets[i] = Integer.valueOf(property); } return rets; } public static long[] getLongArray(SoapObject response) { String property = null; int recordsCount = response.getPropertyCount(); long[] rets = new long[recordsCount]; for (int i = 0; i < recordsCount; i++) { property = response.getProperty(i).toString(); rets[i] = Long.valueOf(property); } return rets; } public static short[] getShortArray(SoapObject response) { String property = null; int recordsCount = response.getPropertyCount(); short[] rets = new short[recordsCount]; for (int i = 0; i < recordsCount; i++) { property = response.getProperty(i).toString(); rets[i] = Short.valueOf(property); } return rets; } public static byte[] getByteArray(SoapObject response) { int recordsCount = response.getPropertyCount(); byte[] rets = new byte[recordsCount]; for (int i = 0; i < recordsCount; i++) rets[i] = ((Byte) response.getProperty(i)).byteValue(); return rets; } public static float[] getFloatArray(SoapObject response) { String property = null; int recordsCount = response.getPropertyCount(); float[] rets = new float[recordsCount]; for (int i = 0; i < recordsCount; i++) { property = response.getProperty(i).toString(); rets[i] = Float.valueOf(property); } return rets; } public static double[] getDoubleArray(SoapObject response) { String property = null; int recordsCount = response.getPropertyCount(); double[] rets = new double[recordsCount]; for (int i = 0; i < recordsCount; i++) { property = response.getProperty(i).toString(); rets[i] = Double.valueOf(property); } return rets; } private static String[] PRIMITIVE_TYPES = { "boolean", "int", "long", "short", "byte", "float", "double" }; private static String[] PRIMITIVE_WRAPPER_TYPES = { "Boolean", "Integer", "Long", "Short", "Byte", "Float", "Double" }; private static String[] PRIMITIVE_FETCH_VALUES = { "Boolean response = (Boolean) envelope.getResponse();", "Integer response = (Integer) envelope.getResponse();", "Long response = (Long) envelope.getResponse();", "Short response = (Short) envelope.getResponse();", "Byte response = (Byte) envelope.getResponse();", "Float response = (Float) envelope.getResponse();", "Double response = (Double) envelope.getResponse();" }; private static String[] PRIMITIVE_RETURN_VALUES = { "return response.booleanValue();", "return response.intValue();", "return response.longValue();", "return response.shortValue();", "return response.byteValue();", "return response.floatValue();", "return response.doubleValue();" }; private static String[] PRIMITIVE_RETURN_FAULT_VALUES = { "return false;", "return 0;", "return 0;", "return 0;", "return 0;", "return 0;", "return 0;" }; private static int findPrimitiveTypeIndex(String typeName) { for (int i = 0; i < PRIMITIVE_TYPES.length; i++) if (typeName.equals(PRIMITIVE_TYPES[i])) return i; return -1; } public static String getWrapperClassName(String typeName) { int i = findPrimitiveTypeIndex(typeName); if (i != -1) return PRIMITIVE_WRAPPER_TYPES[i]; else return null; } public static boolean isPrimitiveType(String typeName) { return findPrimitiveTypeIndex(typeName) != -1; } public static boolean isArrayType(String typeName) { return typeName.indexOf("[]") >= 0; } public static boolean isStringType(String typeName) { return typeName.endsWith("String"); } public static boolean isWrapperType(String typeName) { String shortTypeName = getBaseType(typeName); for (int i = 0; i < PRIMITIVE_WRAPPER_TYPES.length; i++) if (shortTypeName.equals(PRIMITIVE_WRAPPER_TYPES[i])) return true; return false; } public static String getPrimitiveTypeFetchValue(String typeName) { int i = findPrimitiveTypeIndex(typeName); if (i != -1) return PRIMITIVE_FETCH_VALUES[i]; else return ""; } public static String getPrimitiveTypeReturnValue(String typeName, boolean fault) { int i = findPrimitiveTypeIndex(typeName); if (i != -1) return fault ? PRIMITIVE_RETURN_FAULT_VALUES[i] : PRIMITIVE_RETURN_VALUES[i]; else return ""; } public static String getBaseType(String typeName) { String ret = typeName.substring(typeName.lastIndexOf('.') + 1); return ret.replace("[]", ""); } }
相关推荐
本教程主要探讨如何在Android应用中通过WebService访问SQLServer数据库,实现数据的增、删、查操作。以下是相关知识点的详细说明: 1. **Android平台与Web服务的交互**: Android系统提供了多种方式与远程服务器...
本实例将深入探讨如何构建一个Android Web Service客户端和服务端,并提供可直接运行的代码示例。以下是对这两个重要组件的详细说明。 **一、Android Web Service客户端** 在Android客户端,通常使用HTTP库来调用...
通过WebService与Android实现通信是跨平台开发中常见的一种方式,特别是在使用C#作为后端语言进行服务端开发,而Android应用作为前端时。本文将基于提供的文件信息,深入解析这一技术实现的关键步骤与原理。 ### ...
【标题解析】 "RSS阅读器的webservice...总结来说,这个“RSS阅读器的webservice服务端”项目涉及了Android应用开发、Web服务设计、数据库管理和网络安全等多个IT领域,对于开发者来说,是一个综合实践和学习的好素材。
在本篇文章中,我们将基于给定的代码片段来探讨如何在Android应用程序中集成WebService功能,并实现与服务器端的数据交换。本文将详细介绍WebService的基本概念、在Android中的实现方法以及具体的代码示例分析。 ##...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
总结,Android利用Axis2调用Web Service涉及服务端接口设计、客户端代码实现、网络请求和数据解析等多个环节。了解这些知识点有助于构建稳定可靠的跨平台通信。在实际开发中,还需要考虑错误处理、性能优化以及安全...
三、Android与WebService的通信步骤 1. 创建SoapObject,设置方法名和参数。 2. 创建SoapSerializationEnvelope,设置SOAP版本并添加请求对象。 3. 使用HttpTransport(如AndroidHttpTransport)调用WebService。 4....
它使得Android应用程序能够轻松地与使用SOAP协议的Web服务进行通信,而dotNet_WebService通常就是这样的服务,因为.NET框架广泛使用SOAP作为其Web服务的默认通信协议。 **一、集成Ksoap2** 在Android项目中,我们...
本文选用JSON作为数据传输和解析的方式是因为JSON方式与传统的XML解析方式相比,更轻量级、数据可读性方面更经济、越来越多的API供应商对JSON进行了封装、Android通常在蜂窝数据网络上工作的资源受限等原因。...
文档中提到,Web Service接口的创建和发布对于Android开发者而言,是掌握网络数据交互的一个重要环节,涉及到服务端和客户端的共同协作,以及对数据格式的正确解析。 最后,文档中强调了在进行Web Service开发时,...
以前做java的初步理解了下...实现了3个接口服务,1个接口服务端提供登录是用的传统webservice,用的cxf。1个接口只是测试,测试了双向json数据传输解析。还一个接口是网络上提供的手机归属地查询,实现了它的接口。
【WebService服务端与Android客户端交互】\n\n在软件开发中,经常需要实现不同系统间的通信,例如Java Web服务端与Android客户端的数据交换。这里我们详细介绍一个基于WebService的服务端(Java)与客户端(Android...
首先,`Android+Webservice Oracle`的标题表明我们将关注的重点是Android应用程序如何通过Web服务与Oracle数据库进行通信。Web服务,特别是基于SOAP或RESTful架构的Webservice,提供了一种标准化的方式,使得不同...
【JAVA WebService与Android端交互】 在移动应用开发中,尤其是Android平台,与服务器进行数据交换是必不可少的。Java WebService,特别是基于RESTful架构的Web服务,为客户端(如Android应用程序)提供了灵活、轻量...
在Android应用开发中,结合RESTful Web Service是一种常见的实践,用于实现移动设备与服务器之间的数据交互。本篇文章将深入探讨如何在Android项目中利用RESTful Web Service进行开发,以及涉及的相关技术点。 首先...
KSOAP2是一个轻量级的开源库,专为Android设计,用于处理SOAP(简单对象访问协议)消息,从而与基于Web Service的服务进行通信。本篇将详细介绍Android KSOAP2 3.6版本在Webservice中的应用及关键知识点。 1. **...
在Android开发中,有时我们需要与服务器进行数据交互,这时候Web Service接口就显得尤为重要。Web Service是一种基于SOAP(Simple Object Access Protocol)协议的跨平台通信方式,允许不同系统间的数据交换。由于...
在.NET服务端配置允许Android客户端的源进行访问。 4. **数据库集成** - 在Android客户端,可以使用SQLite数据库存储本地数据。当从Web服务获取数据时,可以选择同步到本地数据库,以实现离线访问或提高性能。 - ...