(三)调用web服务
- (二)发布第一个WebService服务与DSWL文档解析讲解了如何发布一个web服务,本章主要讲述如何调用一个web服务。
- 这里有三种方式:
- 使用代理模式调用,需要将服务端的接口类拷贝到客户端中。(不常用,因为不大可能拿到服务端的接口类。)
- 通过客户端桩的方式。
3. 发送原始的soap消息。
一、使用代理模式
- 需要将服务端的接口类拷贝到客户端中。
- 本例所调用的服务为(二)发布第一个WebService服务与DSWL文档解析这个章节所发布的web服务,也就是说需要把该服务的接口类拷贝到客户端中。
package test; import java.net.MalformedURLException;
import java.net.URL; import javax.xml.namespace.QName;
import javax.xml.ws.Service; import service.WebService_1; /**
* 使用代理模式 1.需要将服务端的接口类拷贝到客户端中。
*
* @author Administrator
*
*/
public class Test {
public static void main(String[] args) { try {
// wsdlDocumentLocation是所调用服务的wsdl地址
URL wsdlDocumentLocation = new URL("http://localhost:3031/first?wsdl");
// QName构造函数的第一个参数是所调用服务的wsdl的命名空间。第二个参数是所调用的服务名
QName serviceName = new QName("http://service/", "WebService_1_implService"); Service service = Service.create(wsdlDocumentLocation, serviceName); //通过getport获取到的是一个代理对象,而不是接口对象
WebService_1 webService_1 = service.getPort(WebService_1.class);
int result = webService_1.add(25, 10);
System.out.println("result===" + result);
} catch (Exception e) {
e.printStackTrace();
} }
}
结果:
二、客户端桩
通过wsdl地址或者wsdl文档,生成客户端的调用类,被称为客户端桩的方式。
- 步骤:
- 使用eclipse/myeclipse工具来生成客户端(内部调用jdk命令)(本例中使用)。
- 使用jdk命令来生成客户端。
-
该图为jdk命令,其中 -d表示存放客户端代码的目录,http://localhost:4040/first?wsdl为要生成客户端的wsdl文档地址。
该命令生效后,会生成目录:
其中,客户端代码就在这个目录下。
- 案例:(使用工具生成客户端)
- 本例所调用的服务为(二)发布第一个WebService服务与DSWL文档解析这个章节所发布的web服务
1. 生成客户端。
package test; import java.rmi.RemoteException; import service.WebService_1;
import service.WebService_1Proxy; public class Test {
public static void main(String[] args) throws RemoteException {
WebService_1 weService_1 = new WebService_1Proxy().getWebService_1();
int res = weService_1.add(20, 50);
System.out.println("res=" + res);
}
}
结果:
三、发送原始的soap消息
- 本例中使用soapUI软件来测试。
- 如上图,使用最原始的soap协议发送消息这是最底层的做法。客户端通过封装数据到发送soap消息至服务端,然后服务端返回soap消息至客户端,客户端再对soap消息进行解析获取返回数据。
- 这种方式与第二种客户端桩的方式在于客户端桩方式已经将返回来的soap消息解析为数据并封装到对象里,我们只需要操作对象即可。
(三)调用web服务的更多相关文章
- Java进阶(三十一) Web服务调用
Java进阶(三十一) Web服务调用 前言 有朋友问了一个问题:如何调用已知的音乐服务接口,服务文档如下: https://www.evernote.com/shard/s744/sh/c37cd5 ...
- Android调用Web服务
现在大部分应用程序都把业务逻辑处理,数据调用等功能封装成了服务的形式,应用程序只需要调用这些web服务就好了,在这里就不赘述web服务的优点了.本文总结如何在android中调用Web服务,通过传递基 ...
- 常见的三种Web服务架构
常见的三种Web服务架构 转自http://www.cnblogs.com/bvbook/archive/2008/12/24/1360942.html 相互竞争的服务架构 The Competing ...
- 动态调用web服务
通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名 ...
- 使用ASP.NET AJAX 从脚本中调用Web 服务的应用方法
技能点:通过编写WebService,在页面js中调用WebService来进行数据查询. 网站开发,有些时候需要使用js在页面动态生成一些内容,但还有些数据要通过查询数据库才能获取的. 但由于诸如主 ...
- 在 SQL Server 的存储过程中调用 Web 服务
介绍 一个老朋友计划开发一个应用,基于 .NET 和 Socket,但需要在存储过程中调用 Web 服务. 在这篇文章中我们将分享这个应用的经验,讲述如何在存储过程中调用 Web 服务,并传递参数. ...
- mvc路由引起异步调用web服务的问题
从一篇blog得知使用脚本可以异步调用Web服务,觉得很新鲜,因为自己很少用到Web服务,所以决定写一写看看什么效果. 首先在UI项目(我使用的是MVC4.0)里创建一个Web服务. 添加Web服务后 ...
- 动态调用web服务 --WSHelper.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Net;us ...
- 25.C# 异步调用Web服务
1.创建Web服务 1.1VS新建ASP.Net空Web应用程序 1.2添加Web服务新建项 1.3添加GetWeather方法和相关类 using System; using System.Coll ...
随机推荐
- pytorch基础学习(二)
在神经网络训练时,还涉及到一些tricks,如网络权重的初始化方法,优化器种类(权重更新),图片预处理等,继续填坑. 1. 神经网络初始化(Network Initialization ) 1.1 初 ...
- 设计自用的golang日志模块
设计自用的golang日志模块 golang的原生日志模块不能满足需求,而开源的第三方包,也不完全够用.用户较多的logrus,却没有rotate功能,这已经是众所周知的.对于运维来说,当然是希望日志 ...
- 初识kaggle,以及记录 kaggle的使用
1.简介:Kaggle是一个数据建模和数据分析竞赛的平台.企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛,通过“众包”的形式以产生最好的模型.Kaggle可以分为Competit ...
- 不建议在for循环中使用”+”进行字符串拼接
https://mp.weixin.qq.com/s/qG6bdhndAip9s-_XM9oP3A 为什么阿里巴巴不建议在for循环中使用”+”进行字符串拼接 互联网后端架构 1周前
- mac下如何安装python3?
1. 安装homebrew $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/insta ...
- 阶段5 3.微服务项目【学成在线】_day18 用户授权_17-细粒度授权-获取当前用户信息
3.4.1需求分析 要想实现只查询自己的课程信息则需要获取当前用户所属的企业id. 1.认证服务在用户认证通过将用户所属公司id等信息存储到jwt令牌中. 2.用户请求到达资源服务后,资源服务需要取出 ...
- 算法习题---3.11换抵挡装置(UVa1588)
一:题目 给你连个长度分别为n1,n2且每列高度只为1或2的长条,然后将他们拼在一起,高度不能超过3,问他们拼在一起的最短长度 二:实现思路 1.获取主动轮和从动轮的数据. 2.主动轮不动,从动轮从左 ...
- Jmeter与BlazeMeter使用 录制导出jmx
本文链接:https://blog.csdn.net/weixin_38250126/article/details/82629876JMeter 的脚本录制,除了自带的HTTP代理服务器以外,被大家 ...
- 学习TypeScript 笔记
TypeScript 什么是TypeScript TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准. TypeScript 由微软开发的自由和开源的编程 ...
- 【418】C语言ADT实现Quack(stack+queue)
quack.h #include <stdio.h> #include <stdlib.h> #include <assert.h> typedef struct ...