Android访问JavaEE部署的Web服务返回的JSON格式数据.pdf

上传人:小** 文档编号:3687583 上传时间:2020-10-16 格式:PDF 页数:27 大小:1.41MB
返回 下载 相关 举报
Android访问JavaEE部署的Web服务返回的JSON格式数据.pdf_第1页
第1页 / 共27页
Android访问JavaEE部署的Web服务返回的JSON格式数据.pdf_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《Android访问JavaEE部署的Web服务返回的JSON格式数据.pdf》由会员分享,可在线阅读,更多相关《Android访问JavaEE部署的Web服务返回的JSON格式数据.pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Android 访问 JavaEE 部署的 Web 服务返回的 JSON 格式数据 (湖南铁道 冯向科 2016-04) 一、部署 Web 服务 1创建 Web 服务项目 打开 MyEclipse,依次选择菜单项“File” 、 “New” 、 “Web Service Project” ,打开新建 Web 服务对话框, 如图 1 所示。 输入项目名, 如 “MyWebService” 。 其余采用默认设置。 单击 “Finish” 按钮,创建空的 Web 服务项目。 图 1 新建 Web 服务对话框 2创建 JDBC 配置文件 在 MyWebService 的 src 目录下新建名称为“jd

2、bc.properties”的普通文件,文件内容如 下: jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc.url=jdbc:sqlserver:/localhost:1433 jdbc.dbname=eMenu jdbc.username=sa jdbc.password=123456 3引入访问 SQL Server 和处理 JSON 数据的 jar 包 (1) 在 MyEclipse 中右击 “MyWebService” 项目, 从快捷菜单中依次选择 “New” 、“Folder” , 在新建文件夹对话框中输入“l

3、ibs”名称,将在当前项目中新建 libs 文件夹。 (2)从资源管理器中拖动用于 Java 访问 SQL Server 2008 的“sqljdbc4.jar”和 Java 处理 JSON 格式数据的 7 个 jar 文件到 MyWebService 项目的 libs 文件夹中: commons-beanutils-1.7.0.jar commons-collections-3.2.1.jar commons-httpclient-3.1.jar commons-lang-2.3.jar commons-logging-1.1.1.jar ezmorph-1.0.3.jar json-lib

4、-2.2.3-jdk15.jar 将弹出文件操作对话框,如图 2 所示。从弹出的文件操作对话框中选择“Copy files”单 选钮,单击“OK”按钮,将 Android 访问 Web 服务的包添加到当前项目中。 图 2 选择文件操作类型 4编写 Java 类 展开 MyWebService 项目,在 src 中新增类,设置包名,如类名为“SQLHelper” ,包名为 “com.mywebservice” ,如图 3 所示。 图 3 新增 com.mywebservice.SQLHelper 类 源代码如下: package com.mywebservice; import java.sql

5、.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.util.Enumeration; import java.util.PropertyResourceBundle; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /* * JDBC连接SQL Server的数据库访问类 * auth

6、or 冯向科 * version 2016.4.10 */ public class SQLHelper /* * JDBC连接SQL Server的驱动程序串 */ private static String driver = null; /* * JDBC连接SQL Server的连接串 */ private static String url = null; /* * 查询数据表,返回JSON格式结果集 * param query 查询串 * return JSON格式的结果集 */ public static String getValues(String query) Connect

7、ion con = null; Statement stmt = null; ResultSet rs = null; ResultSetMetaData rsmd = null; init(); try Class.forName(driver); con = DriverManager.getConnection(url); stmt = con.createStatement(); rs = stmt.executeQuery(query); rsmd = rs.getMetaData(); int cols = rsmd.getColumnCount(); JSONArray arr

8、= new JSONArray(); JSONObject obj = null; while(rs.next() obj = new JSONObject(); for(int i=1; i 0 ? 1 : 0); /* * 初始化驱动程序串和JDBC连接串 */ private static void init() if(driver = null | url = null) PropertyResourceBundle resourceBundle = (PropertyResourceBundle) PropertyResourceBundle.getBundle(jdbc); Enu

9、meration enu = resourceBundle.getKeys(); if(enu.hasMoreElements() driver = resourceBundle.getString(jdbc.driver); url = resourceBundle.getString(jdbc.url) + ;databaseName= + resourceBundle.getString(jdbc.dbname) + ;user= + resourceBundle.getString(jdbc.username) + ;password= + resourceBundle.getStri

10、ng(jdbc.password); 5自动生成 Web 服务方法 (1) 展开 MyWebService 项目, 右击 “src” 项, 从快捷菜单中依次选择 “New” 、 “Other” , 打开新建 Web 服务向导,如图 4 所示。 图 4 新建 Web 服务向导 (2)从“Wizards”列表框中选择“MyEclipse” 、 “Web Services” 、 “Web Service” ,单击 “Next”按钮,打开选择 Web 服务框架对话框,如图 5 所示。 图 5 选择 Web 服务框架对话框 (3)选中“Create web service from Java class

11、(Bottom-up scenario) ” ,从 Java 类创建 Web Service。单击“Next”按钮,打开“从 Java 类创建 Web 服务”对话框,在“Java class” 输入框中“com.mywebservice.SQLHelper”后,将自动补充其他信息,如图 6 所示。 图 6 从 Java 类创建 Web 服务对话框 (4)单击“Finish”按钮,将自动创建 HelloDelegate.java 文件,代码如下所示: package com.mywebservice; import java.sql.Connection; import java.sql.Dri

12、verManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.Statement; import java.util.Enumeration; import java.util.PropertyResourceBundle; import net.sf.json.JSONArray; import net.sf.json.JSONObject; javax.jws.WebService(targetNamespace = serviceName = SQLHelperServi

13、ce, portName = SQLHelperPort) public class SQLHelperDelegate com.mywebservice.SQLHelper sQLHelper = new com.mywebservice.SQLHelper(); public String getValues(String query) return sQLHelper.getValues(query); public int executeSQL(String sql) return sQLHelper.executeSQL(sql); (5)适当修改代码,形成如下所示代码: packa

14、ge com.mywebservice; javax.jws.WebService(targetNamespace = serviceName = SQLHelperService, portName = SQLHelperPort) public class SQLHelperDelegate public static String getValues(String query) return SQLHelper.getValues(query); public static int executeSQL(String sql) return SQLHelper.executeSQL(sq

15、l); (6)在 MyWebService 项目的“WebRootWEB-INF”目录下会自动生成 sun-jaxws.xml 配置文件,内容如下: 6配置库 (1)在 MyEclipse 中右击 MyWebService 项目,从快捷菜单中依次选择“Build Path” 、 “Configure Build Path” ,打开 MyWebService 属性对话框,如图 7 所示。 图 7 MyWebService 属性对话框 (2)选择“Libraries”选项卡,单击“Add Library”按钮,打开选择库对话框,如图 8 所示。 图 8 选择库 (3)选择“MyEclipse Li

16、braries”选项,单击“Next”按钮,打开增加 MyEclipse 库对话 框,如图 9 所示。 图 9 选择库到 classpath 中 (4) 勾选 “JAX-WS 2.1 Runtime Libraries (Project Metro 1.1) ” 和 “JAX-WS 2.1 API Libraries” 两个库,单击“Finish”按钮,将这两个库添加到当前项目中。 (5)回到 MyWebService 属性对话框,选择“Libraries”选项卡,单击“Add JARs”按 钮,打开选择 JAR 对话框,如图 10 所示。 图 10 选择 JAR (6)选择“MyWebSer

17、vicelib”中的 json-lib-2.2.3-jdk15.jar 和 sqljdbc4.jar 两个 jar 文件, 单击“OK”按钮,将两个 jar 包添加到当前项目中,如图 11 所示。 图 11 成功添加 JAR 文件 (6) 选择 “Order and Export” 选项卡, 勾选 “JAX-WS 2.1 Runtime Libraries (Project Metro 1.1) ”等库,如图 12 所示。单击“OK”按钮,完整配置库操作。 图 12 勾选库 7部署 Web 服务到 Tomcat 服务器 (1)在 MyEclipse 中单击工具栏的“”按钮,打开如图 13 所示

18、的项目部署对话框, 开始发布 Web 服务。 图 13 部署管理 (2)选择 MyWebService 项目,单击“Add”按钮,打开新建部署对话框,如图 14 所 示。选择合适的服务器,如 Tomcat 6.x。 图 14 新建部署 (3)单击“Finish”按钮,完成发布 MyWebService 项目到 Tomcat 服务器中,此时在项 目部署对话框中将显示已部署的项目,如图 15 所示。单击“OK”按钮,完成整个部署过程。 图 15 显示已部署的项目 8在浏览器测试 Web 服务 (1)在浏览器地址栏输入“http:/localhost:8080/MyWebService/SQLHel

19、perPort” ,显示 效果如图 16 所示。 图 16 Web 服务显示效果 (2)单击“http:/localhost:8080/MyWebService/SQLHelperPort?wsdl”链接,显示效果 如图 17 所示,显示了 MyWebService 这个 Web 服务的描述信息。 图 17 MyWebService 的 WSDL 信息 把 “http:/localhost:8080/MyWebService/SQLHelperPort?wsdl” 中的 localhost 换成 Tomcat 服务器所有主机的 IP 地址也可以访问。 二、访问 Web 服务 1创建 Andro

20、id 项目 在 Eclipse 中新建 Android 项目,如“VisitMyWebService” 。 2引入访问 Web 服务的包 (1)在 Eclipse 中右击“VisitMyWebService”项目,从快捷菜单中依次选择“New” 、 “Folder” ,在新建文件夹对话框中输入“libs”名称,将在当前项目中新建 libs 文件夹。 (2)从资源管理器中拖动“ksoap2-android-assembly-2.6.5.jar”包到 VisitMyWebService 项目的 libs 文件夹中,将弹出文件操作对话框,如图 18 所示。从弹出的文件操作对话框中 选择“Copy f

21、iles”单选钮,单击“OK”按钮,将 Android 访问 Web 服务的包添加到当前项 目中。 图 18 选择文件操作类型 (3)在 Eclipse 中右击 VisitMyWebService 项目,从快捷菜单中依次选择“Build Path” 、 “Configure Build Path” ,打开 MyWebService 属性对话框,如图 19 所示。 图 19 VisitMyWebService 属性对话框 (4)选择“Libraries”选项卡,单击“Add JARs”按钮,打开 JAR 选择对话框,如图 20 所示。 依次展开 “VisitMyWebService” 、 “li

22、bs” 目录, 选择 “ksoap2-android-assembly-2.6.5.jar” 包,单击“OK”按钮,该 Jar 包将出现在当前项目中。 图 20 选择 JAR (5)回到 VisitMyWebService 属性对话框,选择“Order and Export”选项卡,勾选 “ksoap2-android-assembly-2.6.5.jar”项,如图 21 所示。单击“OK”按钮,完整引用包的配 置操作。 图 21 勾选 Jar 包 3设置允许 Android 访问 Web 服务的权限 修改 AndroidManifest.xml 文件,添加允许 Android 访问 Web

23、服务的权限: 4编写访问 Web 服务的代码 修改 Activity 类的 onCreate()方法,添加淡洋红色背景部分代码,调用 Web 服务: package com.visitmywebservice; import org.json.JSONArray; import org.json.JSONObject; import org.ksoap2.SoapEnvelope; import org.ksoap2.SoapFault; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.So

24、apSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import android.app.Activity; import android.os.Bundle; import android.os.StrictMode; public class MainActivity extends Activity Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setConten

25、tView(R.layout.main); try StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() .build(); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() .detectLeakedSqlLiteObjects() .penaltyLog() .penaltyDeath() .build(); St

26、ring strWSUrl = http:/192.168.1.57:8080/MyWebService/SQLHelperPort; String strNameSpace= String strMethodName=getValues; Boolean bIsDotNetService = false; String strEncodingStyle = UTF-8; SoapObject soap = new SoapObject(strNameSpace, strMethodName); /设置Web服务方法的输入参数 soap.addProperty(arg0, SELECT * F

27、ROM Customer); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10); envelope.bodyOut = soap; envelope.dotNet = bIsDotNetService; envelope.encodingStyle= strEncodingStyle; envelope.setOutputSoapObject(soap); try HttpTransportSE transport = new HttpTransportSE(strWSU

28、rl + ?wsdl); transport.call(strNameSpace + strMethodName, envelope); catch (Exception e) System.out.println(e.toString(); / 获取返回的数据 SoapObject object=null; SoapFault error=null; try object = (SoapObject) envelope.bodyIn; catch(Exception e) error = (SoapFault)envelope.bodyIn; System.out.println(Error

29、 message : + error.toString(); return; String value = object.getProperty(0).toString(); System.out.println(JSON格式: + value); JSONArray arr = new JSONArray(value); JSONObject obj; for(int i=0; iarr.length(); i+) obj = arr.getJSONObject(i); System.out.println(obj.getString(CustName); catch (Exception e) System.out.print(e.toString(); 其中“192.168.1.57”为 Tomcat 服务器所在主机的 IP 地址。 5运行测试对 Web 服务的访问 运行 Android 应用程序,在 Logcat 中观察输出,找到 Tag 为“System.out”的日志项, 对应文本为“返回结果:46” ,如图 19 所示。 图 19 运行结果

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁