最近在研究一些Android和JavaWeb项目的交互问题,总结一点东西在这篇文章里。首先说来,如果想要实现Android在网络上与JavaWeb的交互,就要把JavaWeb的项目的方法暴露在网络中,然后供Android的这一端调用,实现交互,其中,主要用到了两个知识点,WebService和SOAP的使用。

这里我写了一个很简单的小例子来实现交互。

首先,在开发工具中,创建了一个Web Project,一定要对项目添加JAX-WS类库。在代码部分我就只写了一个很简单的计算两个数的和的函数:

package com.demo.pack;

import javax.jws.WebMethod;

import javax.jws.WebService;

@WebService

public class Calculate {

@WebMethod

public int add(final int num1, final int num2){

return num1 + num2;

}

}

然后,点击下图中的New Web Service,将刚刚写的这个函数放到网络服务上

点击Finish就创建完成了,这个项目的Calculate方法已经被暴露在了网络上,也就是说,可以供Android调用了。

接下来,我再另外创建了一个Android的项目。在这个Android项目中除了Android的自己的库之外,一定还要引入以下的ksoap2-android-assembly-2.4-jar-with-dependencies.jar

这个jar文件可以使Android的项目访问到Web Service,所以必不可少,一定要加入进来。

在Android的这个项目的布局中,我只是添加了两个EditText来得到用户输入的值,和一个Button去调用WebService上已经托管在网络上的Calculate函数来计算结果。

在Button的监听器类当中,编写了和JavaWeb项目交互的代码,主要的部分具体如下:

//WebService中的wsdl文件的网络地址

String wsdl = "http://192.168.1.102:8080/ch10_app01_WebService/CalculatePort?wsdl";

//WebService中的命名空间

String namespace = "http://pack.demo.com/";

//调用方法的名称

String webmethod = "add";

//创建soapObject对象

SoapObject soapObject = new SoapObject(namespace, webmethod);

//设置参数

soapObject.addProperty("arg0", num1);

soapObject.addProperty("arg1", num2);

//创建SoapSerializationEnvelope对象,并设置WebService版本号

SoapSerializationEnvelope serializationEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

//设置serializationEnvelope对象的badyOut属性

serializationEnvelope.bodyOut = soapObject;

//创建HttpTransportSE对象,并且确定wsdl网络地址

HttpTransportSE httpTransportSE = new HttpTransportSE(wsdl);

try {

//httpTransportSE调用Call方法

httpTransportSE.call(null, serializationEnvelope);

//获取返回的结果对象

if(serializationEnvelope.getResponse() != null){

Object obj = serializationEnvelope.getResponse();

//显示获取到的结果对象

Toast.makeText(getApplicationContext(), "结果为:"+obj.toString(), Toast.LENGTH_LONG).show();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (XmlPullParserException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

在这段代码中,有必要说明一下的是,在写WebService中的wsdl文件的网络地址时,一定要写ipv4的静态地址,不能写什么localhost。另外,命名空间什么的可以再JavaWeb项目中的CalculateDelegate.java中找到。运行如下:

这样,Android项目就成功的和JavaWeb项目实现了交互!

本文出自 “nankaigz” 博客

android 调用java webservice_Android在网络中与JavaWeb的项目进行交互的方法(Webservice)...相关推荐

  1. android 调用java webservice_android通过ksoap2调用java写的CXF 的webservice

    如何添加ksoap2就不多说了,直接代码. 1.webservice:对应地址为http://192.168.1.119:8081/CXFTest/userService?wsdl 2.Activit ...

  2. android 调用java类_Android中在WebView里实现Javascript调用Java类的方法

    搜索热词 为了方便网页和Android应用的交互,Android系统提供了WebView中JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法 ...

  3. Android程序如何实现从网络中获取一张图片

    在学习黎活明的Android视频的时候,有一讲是说怎么从网络中获取图片.这里,我就做一个笔记和总结吧. 首先,我们要知道图片这种文件,不能以我们印象中那些基本数据类型来定义或是以这些类型从网络中获取图 ...

  4. python调用java文件_Python程序中调用Java代码的实践

    1.环境准备 windows 7(64位)+JDK(64位)+Python(64位)+eclipse+pycharm 还需要一个作为桥梁的工具包,jpype1,这个工具包可以启动jvm,使java代码 ...

  5. android调用java接口_java/Android 接口调用的几种写法

    虽然Handler用的地方比较普遍,但是接口也有他的独特之处,比较直观,然后降低了耦合性 如有一接口,需要将数据传给使用的activity中,接口如下 public interfacePushValu ...

  6. android textview 添加图片大小,Android_Android中使用TextView实现图文混排的方法,向TextView或EditText中添加图像比 - phpStudy...

    Android中使用TextView实现图文混排的方法 向TextView或EditText中添加图像比直接添加文本复杂一点点,需要用到标签. 只有一个src属性,该属性原则上应该指向一个图像地址或可 ...

  7. java steam 去重_Java中对List去重 Stream去重的解决方法

    问题 当下互联网技术成熟,越来越多的趋向去中心化.分布式.流计算,使得很多以前在数据库侧做的事情放到了Java端.今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Ja ...

  8. java to对象_java中同类对象之间的compareTo()和compare()方法对比分析

    首先我们都知道java中的比较都是同一类对象与对象之间的比较,就好像现实生活中比较人和人的年龄一样,你不会去把人的年龄和人的身高来比较,这显然是没有意义的. java中同类对象之间的比较又分为两种,基 ...

  9. Java Web开发Tomcat中三种部署项目的方法

    第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:  <Context path="/hello" docBas ...

  10. java 邮件 附件_java中javamail发送带附件的邮件实现方法

    本文实例讲述了java中javamail发送带附件的邮件实现方法.分享给大家供大家参考.具体分析如下: JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理em ...

最新文章

  1. python requests 使用代理
  2. IT项目十大灾难(转载)
  3. supersocket缓冲区_supersockets接收过滤器(ReceiveFilter)
  4. 纸的大小图解_折纸大全图解基础之如何裁切美元尺寸纸张
  5. SAP ABAP实用技巧介绍系列之could not create BAdI implementation
  6. 在c++中qsort()排序函数的使用qsort函数应用大全
  7. Python爬虫爬取美剧网站
  8. 基于https国密算法构建安全数据传输链路
  9. Nginx总复习---1
  10. C# 之 日常问题积累(一)
  11. html图片滚动暂停,怎么设置鼠标悬停时滚动的图片或文字停止?
  12. 微信小程序-仿智行火车票12306
  13. 码农:一次项目经历改掉了我代码洁癖,由4年小兵升为技术leader
  14. python列表del_python删除列表元素的三种方法(remove,pop,del)
  15. 企微社群营销如何提升会员活跃度?
  16. MATLAB 中的randn函数
  17. 什么是大数据?大数据学习路线和就业方向
  18. 所有人望向黑洞那一刻,我们短暂地共享了 5500 万光年外的世界
  19. Python可视化扩展库Matplotlib中使用参数cmap实现颜色映射
  20. 计算机视觉牛人、网站、资源

热门文章

  1. java的程序控制关键字_Java编程的关键字有哪些
  2. 利用分类模型学习特征权重
  3. Redis常见的5种不同的数据类型详解
  4. 掘金企服:ICP经营许可证和ICP备案的区别
  5. Android 端 Rsa加密数据
  6. iOS面试题06-其他
  7. 老司机和你深聊Kubenertes 资源分配之 Request 和 Limit 解析
  8. 【益智题】十块钱去哪了?
  9. Mysql 基础知识
  10. STL sort 函数实现详解 ZZ