这段时间项目进行到了最后时刻,但是还有很多需求没有搞清楚,眼看deadline越来越近,压力也越来越大。现在我的主要工作是将别人开发好的一个系统给加载到我们系统中,使用的方法是通过webService调用那个系统的登录接口。我对webService这个技术知之甚少,所以,这段时间通过各种方法狂补webService知识,刚开始无头苍蝇似的乱撞,看到什么有关的就开始学,只是凭着脑子在想着学,没有动手,导致越学越糊涂。这周刚开始的时候仔细想了想前段时间学习方式,感觉不太对,于是准备从新开始,从发布一个本地webservice服务,通过调用发布成功的本地webService进行测试,测试好多种调用方式,总算是会调用webService服务了。在这里我想说之前漫无目的的学不是一点用也没有,还算是了解了一些webService的知识,毕竟学了那么长时间,怎么会没有收获。下面将调用webService接口的方法记录下来,便于以后复习。

  在网上查了好多资料,很多人分享的调用webService知识都很不错,我也是根据这些学会的webService,大致上如下:  

  1、通过axis实现发布本地webService并调用。

  发布本地webService服务:首先新建一个web项目(一般都是动态的),在src下新建一个java类,作为webService服务类,我建的类如下:

package com.lsk.ws;

public class PrintService {

	public void print(String str){

		System.out.println("Hello,this is my first webservice!");
System.out.println(str); } public String lsk(String params1,String params2,String params3){ String lskResult = params1 + "&" + params2 + "&" + params3;
return lskResult; }
}

  print方法是为了测试无返回值但有打印的webService发放返回结果,结果什么都不返回。lsk这个方法测试返回正常结果。建好这个文件之后,然后右击选择webService 点击creat webService,然后的操作可以在网上找到,在这里不再赘述。

  调用发布的这个本地webService服务:在任意地方写个测试类,内容如下:

String endpoint = "http://localhost:8080/WebService/services/PrintService";
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint); QName qn = new QName("urn:PrintService", "lsk");
call.setOperationName(qn);
String result = (String) call.invoke(new Object[] {"111","222","333"}); // 传参
System.out.println(result); /*QName qn = new QName("urn:PrintService", "print");
call.setOperationName(qn);
call.invoke(new Object[] {"111"}); // 传参*/
} catch (Exception e) {
e.printStackTrace();
}

  上述测试方法用的是axis1.4,测试之前导入axis1.4的jar包。

  2、通过xFire调用webService,还以本机发布的webService为例。

  新建java project,首先导入xFirejar包,然后新建一个interface,该接口只需要生命需要调用的webService方法,如:

package com.lsk.webClient;

public interface IPrint {
public void print(String str);
public String lsk(String x1,String x2,String x3);
}

  然后,写个测试类和方法测试调用webService,如下:

Service srModel = new ObjectServiceFactory().create(IPrint.class);
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());//创建工厂实例
String helloURL = "http://localhost:8080/WebService/services/PrintService";
try {
IPrint IPrintService = (IPrint) factory.create(srModel, helloURL);
String params1 = "mmm";
String params2 = "nnn";
String params3 = "ddd";
IPrintService.print("哈哈哈哈哈哈");
System.out.print(IPrintService.lsk(params1, params2, params3));
} catch (MalformedURLException e) {
e.printStackTrace();
}

  这是xFire调用webService的一种方法,我觉得这种方法与wsdl2java生成客户端类似。

  下面说一种调用网络上免费的webService服务的方法:

public static void main(String[] args) throws Exception {

        String endpoint = "http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl";          

        String operationName = "getWeatherbyCityName";

        Service service = new Service();

        Call call = (Call) service.createCall();

        call.setTargetEndpointAddress(endpoint);

        call.setOperationName(new QName("http://WebXml.com.cn/",operationName)); 

        call.addParameter( new QName("http://WebXml.com.cn/","theCityName"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN); call.setReturnClass(java.lang.String[].class); call.setUseSOAPAction(true);
call.setSOAPActionURI("http://WebXml.com.cn/"+"getWeatherbyCityName"); String[] res = null;
res=(String[]) call.invoke(new Object[]{"郑州"}); for(String str:res){
System.out.println(str);
}
}

  至此,对调用webService基本上算是了解了,还不能说精通,还需继续努力,人毕竟需要时刻进步,何况我们伟大的攻城狮。

调用webService学习小结的更多相关文章

  1. Android使用ksoap2-android调用WebService学习

    之前主要做客户端UI交互,很少处理数据和接触服务端,但现在的移动设备根本不可能离得开网络连接,数据的交换.最近学习的是在android端如何去调用远程WebService,都说WebService是一 ...

  2. WebService学习小结

    基于web的服务,服务器整理资源供多个客户端应用访问,是一种多个跨平台跨语言的应用间通信整合的方案 使用场景:天气预报.股票.地图,火车票 schema约束复习 <!-- book.xsd,定义 ...

  3. webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口

    webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...

  4. WebService学习整理(一)——客户端三种调用方式整理

    1 WebService基础 1.1 作用 1,       WebService是两个系统的远程调用,使两个系统进行数据交互,如应用: 天气预报服务.银行ATM取款.使用邮箱账号登录各网站等. 2, ...

  5. Web Service学习笔记:动态调用WebService

    原文:Web Service学习笔记:动态调用WebService 多数时候我们通过 "添加 Web 引用..." 创建客户端代理类的方式调用WebService,但在某些情况下我 ...

  6. 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】

    不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...

  7. 【学习篇:他山之石,把玉攻】jquery实现调用webservice

    1.webservice端 using System; using System.Collections.Generic; using System.Web; using System.Web.Ser ...

  8. WebService学习总结(四)——调用第三方提供的webService服务

    http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...

  9. WebService学习--(四)调用第三方提供的webService服务

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...

随机推荐

  1. [CSP-S模拟测试]:B(DP+数学)

    题目传送门(内部题45) 输入格式 第一行$3$个整数$n,m,P$.第二行$m$个整数,表示$m$次询问. 输出格式 一行$m$个整数表示答案. 样例 样例输入1: 2 4 40 1 2 3 样例输 ...

  2. SpringMVC 基础内容及使用步骤

    MVC介绍 mvc是一个众所周知的以设计界面应用程序为基础的设计模式. 它主要通过分离模型.视图及控制器在应用程序中的角色将业务编辑从界面中解耦. MVC的核心思想是将业务逻辑从界面中分离出来,允许它 ...

  3. TCP之11种状态变迁

    1. TCP 之11种状态变迁 TCP 为一个连接定义了 11 种状态,并且 TCP 规则规定如何基于当前状态及在该状态下所接收的分节从一个状态转换到另一个状态.如,当某个应用进程在 CLOSED 状 ...

  4. 数据解析框架之FastJson

    演示实体类 import java.util.List; public class Student { public String name; public int age; public List& ...

  5. Java Web开发中路径问题小结(getRequestUrl getContextUrl getServletUrl)

    看以博客感觉不错,分享一下http://www.cnblogs.com/tianguook/archive/2012/08/31/2665755.html (1) Web开发中路径的几个基本概念 假设 ...

  6. 八十四:redis之redis的集合、哈希操作

    set集合操作 添加元素:sadd set value1 value2... 查看元素:smembers set 移除元素:srem set member 查看集合中的元素个数:scard set 获 ...

  7. Linux 服务器基本优化

    一:修改ulimit数 vi /etc/security/limits.conf 添加如下行: * soft noproc 65535 * hard noproc 65535 * soft nofil ...

  8. 数据库高级数据库学习--上机练习7(Transact-SQL 函数定义和调用)

    上机练习7 在Transact SQL中,有一类特殊的自定义函数,其返回值为一张表,该类自定义函数被称作内嵌(联)表值函数,其基本语句格式如下: CREATE FUNCTION函数名称[( {@参数名 ...

  9. centos7安装VuePress

    VuePress可以帮你快速建站,使用MarkDown语法生成静态html yum install -y gcc-c++ make curl -sL https://rpm.nodesource.co ...

  10. 如何使用Pythonapi函数写股票策略

    如何使用Python api 函数写股票策略 写策略需要了解的语法包括两方面,一方面是语言本身的语法(包括相关库),另一方面是量化平台提供的api.量化平台提供的api帮助文件里都有了,本文主要介绍写 ...