当Web Services遇到Android(初步接触时可能遇到的错误)

Web Services移植到Android平台上时,通过需要导入ksoap2-android这个包。ksoap2 是JAVA 环境下的一个轻量级Web Services 客户端库, 被设计用在Applets 和J2ME 中;而ksoap2-android 是其在Android平台上的移植,它提供了一个高效的SOAP 库,借助ksoap2 我们就能够轻松访问Web Services 服务了。

然而在实际开发过程中,总是会遇到一些问题,让人感觉很崩溃,现总结如下。

1.android开发过程中的权限问题

运行程序后,Log信息中提示Runtime Exception,但是又没有给出程序中具体的错误信息,那么很有可能就是因为权限问题,比如访问网络的权限。

解决方法:在AndroidManifest.xml文件中,加入以下代码,表示该程序需要有访问网络的权限。

<uses-permission android:name="android.permission.INTERNET" />

如果还涉及到其它权限,可参考 http://dev.10086.cn/cmdn/wiki/index.php?doc-view-5887.html

2.ksoap2-android.jar的导入问题

此时Log信息中经常会提示java.lang.NoClassDefFoundError,从而导致程序崩溃。

解决方法:以前开发java程序时导入jar包都是用一下的方法:

    工程点击右键->Build Path->Add Libraries->User Library->选择包含需要的jar包的Library(如果没有的话就点击User Libraries新建一个Library,然后再选中)

    但是,在Android中导入jar包的步骤如下:工程点击右键->Build Path->Add External Archives->选择要导入的jar包

原因猜想:如果是利用第一种方法导入的jar包的话,classpath文件中会生成这样一条语句:

<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/KSOAP2"/>

这种导入jar包的方法依赖于开发环境eclipse;而如果用第二种方法导入jar包的话,会在classpath中产生如下的语句:

<classpathentry kind="lib" path="D:/JAVATOOLS/ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar"/>

这种导入方式用的是绝对路径,与eclipse开发环境无关,而且以这种方式导入后,jar包的信息会被加到工程class.dex中,进而会被打包到apk中。

3.Java Build Path设置问题

依旧是令人抓狂的java.lang.NoClassDefFoundError

解决方法:右键项目,依次选择properties ---- java build path -----order and report ,然后在koasp2包前面打上勾(最好是select all)

4.Andorid访问本机的地址

这个问题笔者还没有接触过,不过也列出来算做提醒,防止有人遇到。

Android模拟器访问Tomcat上部署的webservice程序时,不能用localhost或者本机IP,Android默认访问本机地址为10.0.2.2。

 

如果上面几种方法都试过后,问题还是没有解决,不妨先Project -> clean 一下,最好再重启下模拟器或重新连接手机。


OK,上面只是个人的一些简单总结,欢迎大家补充。

 

原文地址:https://www.cnblogs.com/pinky878/p/2445916.html