WebService 安卓客户端调用和服务器端搭建
2016-03-21 20:43
363 查看
这段时间做了一个小程序,想通过WebService来供安卓客户端调用。先说一下安卓端的程序。之前没有进行过安卓+Java的编程,就先找网上的一个查询手机号码归属地例子来测试WebService。
在Android平台调用Web Service需要依赖于第三方类库ksoap2,它是一个SOAP Web service客户端开发包,主要用于资源受限制的Java环境。在Android平台中我们并不会直接使用ksoap2,而是使用ksoap2 android。KSoap2 Android 是Android平台上一个高效、轻量级的SOAP开发包。
客户端编程的时候参考了后面的博客链接博客,文章非常详细,按照文中给出的步骤和代码,很快编译通过,不过运行的时候点击了查询按钮之后,程序会退出。打开文中给出的网址,网页上贴着通知,网址搬迁并且给付费用户提供服务并且不再提供安卓端支持。换了另外几个网址提供的WebService接口,还是一样退出。之后调试时发现,当安卓端程序试图访问对方的WebService接口时,会捕捉到SoapFault,查看logcat打印的信息,“SoapFault - faultcode…“后面一长串错误信息,比如缺少传递的参数等等。
后来开始怀疑服务器是否能提供免费的接口,幸好小组成员有同时开始部署服务器端的WebService,连接之后发现不再有SoapFault,当然程序也不会退出了,不过还是有点小问题,客户端的参数传递不过去,但是服务器端可以传递数据给客户端,另外,我们自己部署的WebService的WSDL文件看起来和大多数的WSDL文件有些差别,比如传递参数的说明。
所以方向又放到WebService服务器端了,之前是通过java自带的WebService来做的接口,后来又试图使用第三方的CXF,AXIS等,查阅了很多方法,最后看到一本书《Java EE 6 企业级应用开发教程》,书中使用了Java EE来做WebService接口,非常简洁。我们之前使用的也是Java自带的WebService接口,只不过是Java,不是Java EE。重新下载一个eclipse-jee就行,还是一样的步骤。
总结一下:
客户端出现的错误主要是由于服务器不再提供免费的WebService接口。
服务器端则换成JavaEE就行了。
补充一下步骤:
客户端的步骤按照这篇即可,文中也提到一些注意点,比如要添加INTERNET权限,
/article/1611856.html
此外还需要修改一处地方,
在AndroidManifest.xml,把
<<<< uses-sdk android:minSdkVersion=”8” android:targetSdkVersion=”17” />>>>
这句给删除,否则执行到HttpTransportSE.call()这句的时候,程序会卡在这里很久,然后退出。
http://blog.sina.com.cn/s/blog_7768d2210101hlgn.html
服务器端的步骤见
1. Java Web开发环境的搭建(JDK+Eclipse+Tomcat)
http://blog.csdn.net/zhugexubin/article/details/41726587
2. 编写程序
(1)建立一个dynamic web project, Mytest(详情见前文提到的书本)
(2)新建一个类hello,就和你的普通java程序一样
(3)右键点击你刚刚建立的hello.Java,选择Web Services->Create Web Services,然后一路点击next。
(4)查看你刚刚发布的WebService,在网址http://localhost:8080/Mytest/services查看,你会看到WSDL文档,有相应说明
在Android平台调用Web Service需要依赖于第三方类库ksoap2,它是一个SOAP Web service客户端开发包,主要用于资源受限制的Java环境。在Android平台中我们并不会直接使用ksoap2,而是使用ksoap2 android。KSoap2 Android 是Android平台上一个高效、轻量级的SOAP开发包。
客户端编程的时候参考了后面的博客链接博客,文章非常详细,按照文中给出的步骤和代码,很快编译通过,不过运行的时候点击了查询按钮之后,程序会退出。打开文中给出的网址,网页上贴着通知,网址搬迁并且给付费用户提供服务并且不再提供安卓端支持。换了另外几个网址提供的WebService接口,还是一样退出。之后调试时发现,当安卓端程序试图访问对方的WebService接口时,会捕捉到SoapFault,查看logcat打印的信息,“SoapFault - faultcode…“后面一长串错误信息,比如缺少传递的参数等等。
后来开始怀疑服务器是否能提供免费的接口,幸好小组成员有同时开始部署服务器端的WebService,连接之后发现不再有SoapFault,当然程序也不会退出了,不过还是有点小问题,客户端的参数传递不过去,但是服务器端可以传递数据给客户端,另外,我们自己部署的WebService的WSDL文件看起来和大多数的WSDL文件有些差别,比如传递参数的说明。
所以方向又放到WebService服务器端了,之前是通过java自带的WebService来做的接口,后来又试图使用第三方的CXF,AXIS等,查阅了很多方法,最后看到一本书《Java EE 6 企业级应用开发教程》,书中使用了Java EE来做WebService接口,非常简洁。我们之前使用的也是Java自带的WebService接口,只不过是Java,不是Java EE。重新下载一个eclipse-jee就行,还是一样的步骤。
总结一下:
客户端出现的错误主要是由于服务器不再提供免费的WebService接口。
服务器端则换成JavaEE就行了。
补充一下步骤:
客户端的步骤按照这篇即可,文中也提到一些注意点,比如要添加INTERNET权限,
/article/1611856.html
此外还需要修改一处地方,
在AndroidManifest.xml,把
<<<< uses-sdk android:minSdkVersion=”8” android:targetSdkVersion=”17” />>>>
这句给删除,否则执行到HttpTransportSE.call()这句的时候,程序会卡在这里很久,然后退出。
http://blog.sina.com.cn/s/blog_7768d2210101hlgn.html
服务器端的步骤见
1. Java Web开发环境的搭建(JDK+Eclipse+Tomcat)
http://blog.csdn.net/zhugexubin/article/details/41726587
2. 编写程序
(1)建立一个dynamic web project, Mytest(详情见前文提到的书本)
(2)新建一个类hello,就和你的普通java程序一样
(3)右键点击你刚刚建立的hello.Java,选择Web Services->Create Web Services,然后一路点击next。
(4)查看你刚刚发布的WebService,在网址http://localhost:8080/Mytest/services查看,你会看到WSDL文档,有相应说明
相关文章推荐
- CROC 2016 - Elimination Round (Rated Unofficial Edition) E. Intellectual Inquiry 贪心 构造 dp
- 基于DDS的任意波形发生器
- Java+MySQL实现网络爬虫程序
- MySQL 入门 之 联接关键字
- 智能指针的理解
- CALayer Animation实践(一):让应用灵动起来!
- 初学统计学(一)
- ios管理插件
- thinkphp学习记事
- 页面两个submit通过onclick修改action本地没问题,服务器无效的奇葩问题
- Linux 之 最常用的20条命令
- java基本知识点
- CCIE学习笔记 5---IPV6
- Android中RelativeLayout和LinearLayout性能分析
- android BaseFragment 工具类
- codevs 2152 滑雪
- 基于FPGA的通信系统实验
- Button控件常用api
- Java之HashMap在多线程情况下导致死循环的问题
- Java 进阶 之 检查型异常与非检查型异常