Webservice实践(二)Webservice 客户端开发

2023-10-27

现在我们首先进行客户端开发的实践,从客户端实践来了解一下webservice的应用场景。比如说现在已经有一个webservice服务,提供的翻译方面的功能服务(主要是免费的webservice接口现在很多都被封了),我们需要编写一个客户端来使用这个公网可以访问的webservice服务。

一、目标:

通过编写一段客户端代码来调用webservice服务

掌握开发客户端的一般步骤和过程

二、客户端开发

2.1 先了解提供服务的webservice的情况

http://fy.webxml.com.cn/webservices/EnglishChinese.asmx这个网址一个webservice服务提供者,直接打开着网址,可以看到如下界面:



我们可以点击一下其中的接口(服务),看是否可以正常工作

点击调用,可以看到这个接口返回的字符串

2.2  生成wsdl文件

上一小节验证了这个webservice接口时可以工作的,接下来,我们需要将这个服务的接口文档复制到本地,在asmx 的url后,加上 ?wsdl 就可以用浏览器打开wsdl信息页面。 http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl

这个URL打开后,呈现下面这样的信息

这个保存到本地目录(如果是用chrome,右键就有另存为菜单),注意保存的后缀要改为wsdl

2.3 wsdl 文档编译

wsdl文档的编译,需要用到java自带的wsimport 程序,进入wsdl文档所在目录(注意目录名不能有空格,因为命令行操作会将空格当做参数的分割符)。本例中放入 e盘的tmp目录,通过命令行进入这个目录后,执行下面命令:C:\jdk1.6.0_43\bin\wsimport  -keep  EnglishChinese.asmx.wsdl

运行报错了,19行和105行,都有报告schema 问题。我们可以对这个位置的信息进行一个替换操作修改wsdl文档的部分内容: <s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>


  替换完成后,我们再次执行上次命令,现在不报错了。

2.4  建立客户端工程

首先建立一个工程,StudyWebserviceCli,在这个工程里面,将刚才接口包拷贝进来

然后,建立一个client应用类 TranslateWsCli

package com.study.webservice.client;

import java.util.List;

import cn.com.webxml.ArrayOfString;
import cn.com.webxml.EnglishChinese;
import cn.com.webxml.EnglishChineseSoap;

public class TranslateWsCli {

	public static void main(String[] args) {

		// 创建一个EnglishChinese工厂
		EnglishChinese factory = new EnglishChinese();

		// 根据工厂创建一个EnglishChineseSoap对象
		EnglishChineseSoap translateWsSoap = factory.getEnglishChineseSoap();

		// 调用WebService提供的translatorSentenceString方法获取"工作"的中英文造句
		ArrayOfString translateInfo = translateWsSoap
				.translatorSentenceString("工作");

		//将ArrayOfString 对象转换成List
		List<String> listString = translateInfo.getString();

		// 遍历翻译的info信息
		for (String stringinfo : listString) {
			System.out.println(stringinfo);
			System.out.println("------------");
		}
	}

}
现在我们运行一下,可以看到与2.1 soap测试中返回的内容是一致的。

、小结

webservice 客户端的开发步骤大致如下:

1、 获取web服务的 asmx ,并通过这个获取到 wsdl 文档

2、 采用 wsimport 工具导入 wsdl文档,获取到接口的java包或者文件

3、 建立一个工程,引入上一步产生的接口包,并进行客户端开发

客户端程序开发的大致步骤

1) 创建一个接口服务工厂

2) 从这个工厂里面获取soap 接口

       3)  调用这个接口,获取返回对象

       4)    对返回对象进行数据处理



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Webservice实践(二)Webservice 客户端开发 的相关文章

  • 无法从 java 发送 48681 字节消息以保护 wcf 服务

    我必须使用相互身份验证从 java 调用安全的 WCF 服务 一切工作正常 除了我无法发送大小超过 48680 字节的消息 因此 48680 字节的消息已成功发送 但 48681 字节的消息未成功发送 并且 java 应用程序因读取超时异常
  • 将嵌套的 ArrayList 转换为 Java List

    我有这个方法 public List
  • 如何为Spring Boot中的所有控制器指定前缀?

    我有控制器映射到 user and order RestController RequestMapping users public class UserController RestController RequestMapping or
  • Java 延迟/等待

    如何将 while 循环延迟到 1 秒间隔 而不减慢其运行的整个代码 计算机的速度到一秒延迟 只是一个小循环 Thread sleep 1000 do nothing for 1000 miliseconds 1 second
  • 使用 WebDriver 暂时绕过隐式等待

    当使用隐式等待时 正如这里所建议的 https stackoverflow com a 10950905 56285 我仍然有时想要断言即时元素不可见或不存在 换句话说 我know有些元素应该隐藏 并希望我的测试做出这样的断言fast 而不
  • HashMap何时以及如何将桶从链表转换为红黑树? [复制]

    这个问题在这里已经有答案了 我正在研究 java 8 功能 发现当存储桶上的条目集数量增加时 哈希图使用红黑树而不是链表 但是 这是否不需要密钥是可比较的或存在某种密钥排序以及这是如何工作的 这种转变何时真正发生以及如何发生 当有at le
  • IDEA:javac:源版本1.7需要目标版本1.7

    使用 IntelliJ IDEA 运行 JUnit 测试时 我得到 我该如何纠正这个问题 使用SDK 1 7 模块语言级别为1 7 Maven 构建工作正常 这就是为什么我相信IDEA配置问题 您很可能在此处从 Maven 导入了不正确的编
  • Java 中内存高效的稀疏数组

    关于时间高效的稀疏数组存在一些问题 但我正在寻找内存效率 我需要相当于List
  • 在类路径中使用通配符调用 java 失败

    我当前目录中有一些 jar 它们都需要位于类路径中 因此我想对类路径使用通配符约定 命令行是 java exe classpath org python util jython args 但是我收到这个错误 Exception in thr
  • 使用枚举变量切换字符串

    我有一个具有不同值的枚举 并且想要切换字符串变量 现在 我在尝试将枚举值转换为字符串 可以用作大小写常量 时遇到了困难 我最好的尝试是将枚举转换为字符串数组 但开关似乎不接受数组值作为大小写常量 IntelliJ 说 需要恒定的表达 Enu
  • Java文本输出中的UTF-8编码问题

    我一直致力于测试高棉语 Unicode Wordbreaker 的各种解决方案 高棉语单词之间没有空格 这使得拼写检查和语法检查变得困难 以及从旧高棉语转换为高棉语 Unicode 我得到了一些源代码 现在在线 http www white
  • 使用 java 中的准备好的语句插入自定义 SQL 类型

    我有一些自定义类型 它们基本上都是枚举 以下是它们的外观示例 CREATE TYPE card suit AS ENUM spades clubs hearts diamonds 我在 Java 中有一些准备好的语句 看起来像这样 Setu
  • 码头无故停止

    我需要经验丰富的码头用户的建议 我在负载均衡器 亚马逊云 后面维护着 2 台 Linux 机器 使用 Jetty 9 0 3 有时我的 Jetty 容器会被 Thread 2 无故关闭 同时地 显示以下日志并且容器无故停止 没有错误 没有例
  • 在JAVA中将数据写入.txt文件?

    我想知道是否是在JAVA中将计算的数据写入文本文件 我的 JAVA 代码是一个基于 GUI 的 gpa 计算器 我只想添加一个 JButton 和 ActionListener 它将类名 GPA 点和计算出的 GPA 写入 txt 文件 这
  • 使用 JPA 存储库保留 Spring Batch ItemWriter 的问题

    我对春季批次有疑问ItemWriter它依赖于 JPA 存储库来更新数据 这里是 Component public class MessagesDigestMailerItemWriter implements ItemWriter
  • 有没有办法防止 Spring Boot 覆盖 bean?

    与春天的抽象可刷新应用程序上下文 http docs spring io spring docs current javadoc api org springframework context support AbstractRefresh
  • 正确的单元测试技术

    在使用 TDD 时 我发现自己需要测试一个包含查找值的常量 最终 哈希图 请查看更新中出现这种情况的原因 见下文 private static final Map
  • 无法验证 serde:org.openx.data.jsonserde.jsonserde

    我编写了这个查询来在配置单元上创建一个表 我的数据最初是 json 格式 所以我已经下载并构建了 serde 并添加了它运行所需的所有 jar 但我收到以下错误 FAILED Execution Error return code 1 fr
  • JAVAFX 缩放、ScrollPane 滚动

    I have JAVAFX application with zoom and scale as described here Scale at pivot point in an already scaled node https sta
  • 如果垃圾收集器没有删除未引用的对象,它们还能运行吗?

    如果一个对象正在等待垃圾收集 但包含一个在该对象的最后一个引用更改时正在运行的线程 那么该线程是否仍会运行并且代码是否仍会执行 那么您是否可能有一堆应该删除的幽灵对象 但它们对您的代码产生了影响 你如何防止这种情况发生 有没有办法让对象知道

随机推荐

  • 详解大模型微调方法LoRA Adapter(内附实现代码)

    LoRA论文地址 LORA LOW RANK ADAPTATION OF LARGE LANGUAGE MODELS 1 背景介绍 以GPT 3 175B参数量为例 过大的参数量在Finetune的时候代价很大 Adapter适配器方法是进
  • STM32(六)库函数串口发送与接收实例(中断)

    STM系列文章目录 文章目录 STM系列文章目录 前言 一 串口配置步骤 二 实际编写 1 代码部分 重定向fputc函数 GPIO 前言 本篇用库函数写个简单的串口收发 用的是 STM32F103RCT6 开发板 部分来自正点原子 STM
  • rtsp实例及讲解

    rtsp是real time streaming protocol 按照我的理解为流媒体控制协议 协议双方的的编码类型和地址 以及对stream media的控制 play pause record 注意这里不要与RTCP协议搞混 rtcp
  • Mysql—修改用户密码(重置密码)

    Mysql 修改用户密码 重置密码 1 登录mysql 1 2 root localhost mysql uroot p123456 root localhost mysql hlocalhost uroot p123456 如果忘记密码
  • ASP.NET Core 运行原理剖析

    1 ASP NET Core 运行原理剖析 1 1 概述 1 2 文件配置 1 2 1 Starup文件配置 Configure ConfigureServices 1 2 2 appsetting json配置 1 3 处理管道 中间件
  • cesium绘制点、线、面

    cesium绘制点 线 面 地图地形上 点 let handler new Cesium ScreenSpaceEventHandler viewer scene canvas handler setInputAction function
  • 【超级无敌详细的黑马前端笔记!即时更新~】

    超级无敌详细的黑马前端笔记 即时更新 这个笔记 是我自己在同步学习黑马前端使用的 不可以商用哦 学习路径 基础概念铺垫 了解 认识网页 五大浏览器和渲染引擎 Web标准 HTML初体验 HTML的感知 HTML骨架结构 开发工具的使用 语法
  • 【08】STM32·HAL库开发-HAL库介绍

    目录 1 初识HAL库 了解 1 1CMSIS简介 1 2HAL库简介 2 STM32Cube固件包浅析 了解 2 1如何获取STM32Cube固件包 2 2STM32Cube固件包文件夹简介 2 3CMSIS文件夹关键文件 2 3 1CM
  • 增量式pid分析 及 参数整定

    函数功能 增量PI控制器 1 入口参数 编码器测量值 目标速度 2 入口参数 编码器位置 目标位置 返回 值 电机PWM 根据增量式离散PID公式 pwm Kp e k e k 1 Ki e k Kd e k 2e k 1 e k 2 e
  • 宝塔Linux面板—请使用正确的入口登录面板

    请使用正确的入口登录面板 错误原因 当前新安装的已经开启了安全入口登录 新装机器都会随机一个8位字符的安全入口名称 亦可以在面板设置处修改 如您没记录或不记得了 可以使用以下方式解决 解决方法 1 在SSH终端输入以下一种命令来解决 登录你
  • C# 中 KeyPress 、KeyDown 和KeyPress的区别

    1 KeyPress主要用来捕获数字 注意 包括Shift 数字的符号 字母 注意 包括大小写 小键盘等除了F1 12 SHIFT Alt Ctrl Insert Home PgUp Delete End PgDn ScrollLock P
  • 将时间写入数据库时,秒带小数点问题

    1 问题原因 new Date 时间秒带小数点 2 解决思路 将new Date 格式化为年月日时分秒字符串 在将该字符串转为Date 3 示例 Constant类 public final static SimpleDateFormat
  • VScode中文注释乱码问题解决

    VScode默认是用utf 8打开工程代码 C语言里的中文注释如果是Source insight之前gbk编码的注释可能会显示乱码 如何能让代码打开gbk编码的文件也不乱码 设置VScode如下 方法一 依次打开 文件 首选项 设置 然后搜
  • 电机转角控制算法

    时间周期是1 10ms可调 橙色和绿色代表期望和真实速度 红色代表期望角度 紫色代表电机转角 蓝色是减速机输出角度 在9700时刻角度已到达期望角度 速度由 200还未到0 所以算法上需要在要到达目标前某值就需要提前减速 这个值和当前真实速
  • MySQL查询进阶

    多表查询 ALLSOME查询 聚集函数查询 分组查询 分组过滤查询 Student表格 Dept 院系 学院号 学院名 院长 Course表格 Teacher表格 教师号 教师姓名 部门号 工资 SC表格 学号 课程号 分数 反应学生和课程
  • 使用线程池创建线程

    使用线程池可以不用线程的时候放回线程池 用的时候再从线程池取 1 5后引入的Executor框架的最大优点是把任务的提交和执行解耦 Executor接口中定义了一个方法execute 该方法接收一个Runable实例 它用来执行一个任务 任
  • IDEA插件系列(10):Statistic插件——统计代码行数

    1 插件介绍 显示项目统计信息 此插件显示按扩展名排序的文件 以及大小 行数LOC等 2 安装方式 第一种安装方式是使用IDEA下载插件进行安装 第二种方式是使用离线插件进行安装 插件下载地址 http plugins jetbrains
  • W. Richard Stevens Unix网络编程 作品集

    W Richard Stevens 写的那三卷书以怎样的顺序看是比较好的 按我的经验来看先粗略的看一遍卷一 然后再结合卷一看卷二 卷二要看几遍 每遍都会有收获 然后卷三大概看看就行 之后就是看源码 看bsd lite的 在最后就是看linu
  • svn客户端Tortoise SVN使用方法

    svn客户端Tortoise SVN使用方法 转载自 http www cnblogs com armyfai p 3985660 html 该博主介绍比较详细 这里只转载其中svn客户端使用部分 1 首先我们需要下载 svn小乌龟 后 进
  • Webservice实践(二)Webservice 客户端开发

    现在我们首先进行客户端开发的实践 从客户端实践来了解一下webservice的应用场景 比如说现在已经有一个webservice服务 提供的翻译方面的功能服务 主要是免费的webservice接口现在很多都被封了 我们需要编写一个客户端来使