Webservice接口的生成及调用

2023-10-27

最近项目上要对接一个Webservice形式的接口,因为以前一直没有对接过这种类型的,所以这次专门查了一些资料学习下

一、Webservice的简单介绍

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。它通过标准通信协议,在互联网上以服务的方式发布有用的程序模块,目前大部分是用SOAP作为通信协议。它提供一份详细的接口说明书,来帮助用户构建应用程序,这个接口说明书叫WSDL(Web服务描述语言,Web Service Description Language)。还有就是它请求报文和返回报文都是XML格式的。

优点:
1.跨编程语言和跨操作系统,通俗点说就是只要你网络是通的,你.net开发的东西,我java语言也可以调用,跟操作系统也没关系。

缺点:
1.服务端接口方为webservice则客户端也必须使用webservice。
2.因为webservice使用xml传输数据,因此性能上不能满足高并发

二、Webservice的服务端发布

1.发布web程序服务端发布 (这块后续单独写一个模块)

2.本地发布(这个其实很简单,就是写一个测试类运行一下就行,我直接贴代码)

package com.niu;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class TestWebservice {
    /**
     * 供客户端调用的方法
     * @param name
     * @return
     */
    public String getvalue(String name) {
        return "我叫"+name;
    }
    public static void main(String[] args) {
        //用于发布服务,第一个参数是服务地址,端口号需要未被占用的。第二个参数为本类
        Endpoint.publish("http://localhost:9002/Service/TestService",
        new TestWebservice());
        System.out.println("service succes");
    }
}

三、Webservice的代码生成

1.用dos命令生成代码(在idea中可以直接打开终端然后执行wsimport命令,前提是安装了jdk)

(1)wsimport -keep http://xxxx/xxx/xxx.asmx?wsdl

(2)wsimport -s d:\java\src -p com.nrj.client -keep http://xxxx/xxx/xxx.asmx?wsdl

         wsimport -s  文件路径 -p  包名 -keep http://xxxx/xxx/xxx.asmx?wsdl

 2.idea生成(直接右键open in terminal打开终端)

四、Webservice的客户端调用

1.简单调用(也是直接写个简单测试类,同时把生成的代码也放在项目中,然后运行就行)

package com.niu.ws;

import com.niu.TestWebservice;
import com.niu.TestWebserviceService;

public class ServiceTest {
    public static void main(String[] args) {
        TestWebservice ws = new TestWebserviceService().getTestWebservicePort();
        String name = ws.getvalue("张三");
        System.out.println("输出:"+name);
    }
}

2.service编程实现调用

3.利用apache的AXIS直接调用远程的web service

4.HttpURLConnection调用方式

5.Ajax调用方式

五、wsdl的xml接口说明书

<service>    服务视图,webservice的服务结点,它包括了服务端点
<binding>     为每个服务端点定义消息格式和协议细节
<portType>   服务端点,描述 web service可被执行的操作方法,以及相关的消息,通过binding指向portType
<message>   定义一个操作(方法)的数据参数(可有多个参数)
<types>        定义 web service 使用的全部数据类型

<!--  Published by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e.  -->
<!--  Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e.  -->
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://niu.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://niu.com/" name="TestWebserviceService">
<types>
<xsd:schema>
<xsd:import namespace="http://niu.com/" schemaLocation="http://localhost:9002/Service/ServiceHello?xsd=1"/>
</xsd:schema>
</types>
<message name="getvalue">
<part name="parameters" element="tns:getvalue"/>
</message>
<message name="getvalueResponse">
<part name="parameters" element="tns:getvalueResponse"/>
</message>
<portType name="TestWebservice">
<operation name="getvalue">
<input wsam:Action="http://niu.com/TestWebservice/getvalueRequest" message="tns:getvalue"/>
<output wsam:Action="http://niu.com/TestWebservice/getvalueResponse" message="tns:getvalueResponse"/>
</operation>
</portType>
<binding name="TestWebservicePortBinding" type="tns:TestWebservice">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="getvalue">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="TestWebserviceService">
<port name="TestWebservicePort" binding="tns:TestWebservicePortBinding">
<soap:address location="http://localhost:9002/Service/ServiceHello"/>
</port>
</service>
</definitions>

自我分析:
1.服务端的类及方法:

TestWebservice ---->getvalue(String name)

2.客户端的使用:
(1)portType标签:portType中的name是原先的服务端类名,operation的name是服务端类名下的方法。
    TestWebservice ----->getvalue
(2)service标签:service中的name是服务端类名的实现类,port是可以获取该实现类的实例
    TestWebserviceService ---->TestWebservicePort
3.例子:
    TestWebservice ws = new TestWebserviceService().getTestWebservicePort();
    String name = ws.getvalue("张三");
4.总结:
  portType是接口标签
  service是实现类标签

六、常用的Webservice接口地址

IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据)
Endpoint :http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx
Disco         :http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?disco
WSDL       :http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl

随机英文、数字和中文简体字 WEB 服务
Endpoint :http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx
Disco        :http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?disco
WSDL       :http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl

中国邮政编码 <-> 地址信息双向查询/搜索 WEB 服务
Endpoint :http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx
Disco        :http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx?disco
WSDL      :http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx?wsdl

附参考链接

常用Webservice接口地址

https://blog.csdn.net/qq_41694906/article/details/88029533

关于 webservice客户端生成代码中的 JAXBElement <T> 字段类型的解决办法

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

Webservice接口的生成及调用 的相关文章

随机推荐

  • F110操作手册-自动付款

    SAP 系统 F110系统操作手册 目 录 1 自动付款 3 1 自动付款 事务代号 F110 菜单路径 会计 财务会计 应付帐款 期间处理 双击进入自动付款界面 填写好运行日期 标识 标识是为了后面的递交 审核等做个标记 便于查询 在中说
  • Linux下摄像头应用编程

    Linux下摄像头应用编程 V4L2是Video for linux2的简称 为linux中关于视频设备的内核驱动 在Linux中 视频设备是设备文件 可以像访问普通文件一样对其进行读写 摄像头在 dev video 下 如果只有一个视频设
  • 深入理解instrument

    一 前提 目前主流的APM开源框架如Pinpoint SkyWalking等等都是通过java lang instrument包提供的字节码增强功能来实现的 实际上 我们日常应用的各种工具中 有很多都是基于他们实现的 例如常见的热部署 JR
  • 区块链开发溯源系统 基于以太坊的溯源系统开发

    基于以太坊的溯源系统 实现分级用户 商品溯源等的功能 毕设系统
  • 2023华为OD机试真题-机房布局(JAVA、Python、C++)

    题目描述 小明正在规划一个大型数据中心机房 为了使得机柜上的机器都能正常满负荷工作 需要确保在每个机柜边上至少要有一个电箱 为了简化题目 假设这个机房是一整排 M表示机柜 I表示间隔 请你返回这整排机柜 至少需要多少个电箱 如果无解请返回
  • 你真的搞懂Class,class了么?

    博客主页 傻根根呀 欢迎点赞 收藏 留言 欢迎讨论 本文由 傻根根呀 原创 首发于 CSDN 由于博主是在学小白一枚 难免会有错误 有任何问题欢迎评论区留言指出 感激不尽 个人主页 精品专栏 不定时更新 JavaSE MySQL LeetC
  • 有时间学习下ue4开源项目shootergame和虚幻竞技场

    无意中 看到有人推荐这个 特此留个坑 以后学习下 另外 官方文档上有大例子推荐 可以学下 https docs unrealengine com 4 27 zh CN Basics InstallingUnrealEngine Custom
  • 算术基本定理及其应用

    算术基本定理 又称为正整数的唯一分解定理 即 每个大于1的自然数均可写为质数的积 而且这些素因子按大小排列之后 写法仅有一种方式 例如 6936 23 3 172 1200 24 3 52 6936 2 3
  • Reliable Cloud Infrastructure: Design and Process学习笔记

    最后更新2022 03 16 忘记更新对应的学习笔记 补上 这一科有9节 加上0章简介 简介 google cloud的好多功能有点相似 这科内容是介绍应该选什么产品 怎么选择 怎么规划 怎么设计等等 首先 你要有个软件产品的设计思想 包括
  • 西米支付:微信服务商支付的介绍

    服务商申请条件 1 微信支付服务商面向企业 政府机关 事业单位 社会组织类型主体开放申请 2 申请资料准备 1 业务联系人信息 包含联系人姓名 联系手机 联系邮箱 若联系人非法定代表人 还需提交有效证件照片 2 主体身份信息 营业执照 登记
  • (纯c)数据结构之------>链表(详解)

    目录 一 链表的定义 1 链表的结构 2 为啥要存在链表及链表的优势 二 无头单向链表的常用接口 1 头插 尾插 2 头删 尾删 3 销毁链表 打印链表 4 在pos位置后插入一个值 5 消除pos位置后的值 6 查找链表中的值并且返回它的
  • 【Nginx】解决在Nginx+Vue部署多个前端项目,二级目录不能访问、访问空白的问题

    一 前言 需求 设置访问 www ai com 访问时打开前端代码 tmp zhsf 设置访问 www ai com case search 时 访问时打开另一个前端代码 tmp template 二 实现过程 1 根目录访问 部署使用ng
  • uni-cloud云函数管理公共模块依赖

    1 右键函数文件夹 选中依赖模块 更新依赖 2 完成后
  • Keras中的fit函数训练集,验证集和测试集

    Keras中的fit函数训练集 验证集和测试集 1 Keras fit函数history对象包含两个重要属性 epoch 训练的轮数 history 它是一个字典 包含val loss val acc loss acc四个key 2 关于训
  • 第十三届蓝桥杯大赛软件赛省赛 Python 大学 C 组

    试题 A 排列字母 本题总分 5 分 问题描述 小蓝要把一个字符串中的字母按其在字母表中的顺序排列 例如 LANQIAO 排列后为 AAILNOQ 又如 GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPST
  • 拥抱ChatGPT,开启结对咨询模式!

    ChatGPT刮起了一阵旋风 ChatGPT到底能做什么 做到什么程度 真的会让咨询顾问失业吗 带着这样的疑问 我费尽周折 注册了ChatGPT账号 我先从一个大众化的话题开启了与ChatGPT的对话 如何提高软件开发的质量 如果是我回答这
  • 网页文字复制的几种方法

    1 开启网页阅读模式 这种方法适用于Microsoft Edge浏览器中 它有网页阅读功能可以使用 在网址的最前面加上 read 就会进入网页阅读界面 然后选中文字就可以直接进行复制了 2 直接拖拽 一种简单直接的方法 不用进行任何其他操作
  • 如何在服务器上跑python程序

    购买服务器 首先你需要一个服务器 阿里云云翼计划有一个9 9云服务器ECS服务 你怎么买我不管 反正你最后给我搞到一个云服务器 购买的配置界面 由于阿里云现在限量购买 所以这里只是截个图说明而已 主要说明一点公共镜像选择ubuntu14 0
  • 【软件测试】理论知识基础第一章

    前言 骗取自己的救赎 直到和染尘斑驳的玫瑰一起坠入深渊 软件测试 理论知识基础第一章 一 认识软件测试 1 什么是软件测试 二 常见的测试分类 1 阶段划分 2 代码可见度划分 3 扩展 总结 三 模型 1 质量模型 2 W模型 四 软件测
  • Webservice接口的生成及调用

    最近项目上要对接一个Webservice形式的接口 因为以前一直没有对接过这种类型的 所以这次专门查了一些资料学习下 一 Webservice的简单介绍 WebService是一种跨编程语言和跨操作系统平台的远程调用技术 它通过标准通信协议