这段时间项目进行到了最后时刻,但是还有很多需求没有搞清楚,眼看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模拟测试]:二叉搜索树(DP+贪心)

    题目传送门(内部题99) 输入格式 第一行一个整数$n$,第二行$n$个整数$x_1\sim x_n$. 输出格式 一行一个整数表示答案. 样例 样例输入: 58 2 1 4 3 样例输出: 数据范围 ...

  2. 批量插入数据@Insert

    // 批量插入数据 @Insert("<script>" + "insert into index_kline (currency_id, currency, ...

  3. sublime tab转4个空格配置

    打开Sublime Text3,选择菜单Preferences->Settings-User,打开用户配置文件 然后在大括号里加上下面两行代码: "tab_size": 4, ...

  4. Laravel5.2中Eloquent与DB类的区别是什么?

    要了解这些先看看关于数据库组件的那些事儿(就是 Eloquent ORM) 数据库组件大概分了三层: 数据库连接层 查询构造层 应用层 来看一下每一层有哪些东西,分别对应文档的哪一部分: 数据库连接层 ...

  5. 一、初识Spring Boot框架

    一.搭建Spring Boot环境 1.选择Project,选择Spring Initializr 2.选择Sdk与默认url 3.点击 Next 4.修改一下Group信息和Artifacet,Ne ...

  6. Nginx优化防爬虫 限制http请求方法 CDN网页加速 架构优化 监牢模式 控制并发量以及客户端请求速率

    Nginx防爬虫优化 Robots协议(也称为爬虫协议,机器人协议等)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可 ...

  7. LC 763. Partition Labels

    A string S of lowercase letters is given. We want to partition this string into as many parts as pos ...

  8. AWS EC2 外网不能访问的坑

    概述 今天我在 AWS EC2 上配置并启动了 nginx,但是通过外网不能访问,查了一下资料终于解决了,记录下来供以后开发时参考,相信对其它人也有用. 外网访问不了的原因 外网访问不了的原因不外乎有 ...

  9. 数据中心网络架构的问题与演进 — Overlay 网络

    目录 文章目录 目录 前文列表 数据中心网络架构演进回顾 Overlay 网络 Overlay 网络的优势 基于 VxLAN Overlay 的 Spine-Leaf 网络架构 参考文章 前文列表 & ...

  10. 安德鲁1.2Ku全下125C波(CCTV4K除外)

    闲来无事.没事挑战下难度. 前面高楼挡住了,一直没有试过125, 没想到1.2的锅能全下 机器:恐龙机dinobot4K+ 天线:安德鲁1.2ku 接送结果:除4K外所有高清 图片如下