VS创建wsdl服务提供给java调用

文章目录

  • 前言
  • [1.c#创建asp.net web服务](#创建asp.net web服务)
    • [1.1 创建ASP.NET Web应用程序](#1.1 创建ASP.NET Web应用程序)
    • [1.2 添加服务类](#1.2 添加服务类)
    • [1.3 定义服务方法](#1.3 定义服务方法)
    • [1.3 浏览服务](#1.3 浏览服务)
    • [1.4 发布服务](#1.4 发布服务)
    • [1.5 IIS部署服务](#1.5 IIS部署服务)
  • 2.Java中调用服务
    • [2.1 用动态客户端工厂类调用](#2.1 用动态客户端工厂类调用)
      • [2.1.1 引入依赖](#2.1.1 引入依赖)
      • [2.1.2 调用测试代码](#2.1.2 调用测试代码)
      • [2.1.3 测试结果](#2.1.3 测试结果)
    • [2.2 创建代理类进行调用](#2.2 创建代理类进行调用)
      • [2.2.1 使用wsdl2java指定 WSDL URL 并生成 Java 代码](#2.2.1 使用wsdl2java指定 WSDL URL 并生成 Java 代码)
      • [2.2.2 由于版本不兼容生成报错](#2.2.2 由于版本不兼容生成报错)
  • 3. c#中winform程序调用
    • [3.1 创建一个winform程序](#3.1 创建一个winform程序)
      • [3.1.1 直接添加服务引用](#3.1.1 直接添加服务引用)
      • [3.1.2 在窗体添加标签和txtbox和按钮](#3.1.2 在窗体添加标签和txtbox和按钮)
      • [3.1.3 添加按钮点击事件](#3.1.3 添加按钮点击事件)
      • [3.1.4 测试调用](#3.1.4 测试调用)

前言

平时开发中经常遇到不通厂家对于不同语言进行开发,通常都是提供服务进行数据交互,本文将讲解VS开发wsdl服务给java调用,创建服务通过IIS发布soap协议的服务,java中进行调用。

1.c#创建asp.net web服务

1.1 创建ASP.NET Web应用程序

1.2 添加服务类

然后右键添加类,添加web服务,如下截图:

1.3 定义服务方法

c# 复制代码
namespace MyService
{
    /// <summary>
    /// WebService1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {
        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod]
        public int add(int x,int y)
        {
            return x + y;
        }
    }
}

1.3 浏览服务

1.4 发布服务

选中项目右键发布

发

发布服务到文件夹

之后随便选中一个文件夹即可。

1.5 IIS部署服务

添加网站,网站名字,选中发布的物理路径,可以不指定ip默认是本机,修改端口。

此时浏览网站不好使,还需要选中目录浏览->打开功能

浏览网站

打开服务

此处web服务发布成功,接下来就是调用。

2.Java中调用服务

2.1 用动态客户端工厂类调用

2.1.1 引入依赖

xml 复制代码
  <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>3.0.4</version>
        </dependency>

2.1.2 调用测试代码

java 复制代码
  public static void main(String[] args) {
        JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
        //调用服务的地址
        String url ="http://localhost:8083/WebService1.asmx?wsdl";
        // 创建客户端连接
        Client client = factory.createClient(url);
        //调用方法
        String methodName = "add";
        //调用参数
        Object[] parameters= new Object[] {1,2};;
        //返回的结果
        Object[] res = null;
        try {
           res = client.invoke(methodName, parameters[0],parameters[1]);
            System.out.println(res[0]);

        }catch(Exception e) {
            e.printStackTrace();
        }
    }

2.1.3 测试结果

2.2 创建代理类进行调用

2.2.1 使用wsdl2java指定 WSDL URL 并生成 Java 代码

wsdl2java 工具其实是 Apache CXF 的一部分。下载最新的稳定版本apache-cxf-4.0.2.zip。

bash 复制代码
 wsdl2java -client -d src/main/java -p com.elite.java.wsdl.cxf.client http://localhost:8083/WebService1.asmx?wsdl

2.2.2 由于版本不兼容生成报错

此处不在演示!

3. c#中winform程序调用

3.1 创建一个winform程序

3.1.1 直接添加服务引用

3.1.2 在窗体添加标签和txtbox和按钮

3.1.3 添加按钮点击事件

c# 复制代码
  private void button1_Click(object sender, EventArgs e)
        {
            //获取值
            int a = int.Parse(textBox1.Text);
            int b = int.Parse(textBox2.Text);
            ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient();
            int res = client.add(a,b);
            textBox3.Text = res.ToString();
        }

3.1.4 测试调用

相关推荐
码匠许师傅9 小时前
【C++三方组件】POCO:跨平台系统编程全家桶
开发语言·c++
silvamux_9 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
bkspiderx9 小时前
基于Socket的广播通信及C语言实现详解
c语言·开发语言·socket·广播·socket的广播通信
小王C语言9 小时前
Qt常用控件:输入类控件,单行/多行输入框、下拉框、(日期)微调框、旋钮、滑动条
开发语言·qt
ESDWAN9 小时前
SD-WAN 主备切换为什么仍然会断网?从检测机制到会话恢复分析
开发语言·php
步行cgn10 小时前
StringHttpMessageConverter 详解:Spring MVC 中字符串读写的默认转换器
java·spring·mvc
摇滚侠10 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
1001101_QIA10 小时前
.exe does not seem to be a Qt executable.
开发语言·qt
小蒜学长10 小时前
基于Spring Boot+Vue3的在线医疗咨询系统的设计与实现(代码+数据库+LW)
java·spring boot·后端·在线问诊·在线医疗咨询系统
Deng桑10 小时前
SpringAI写第一个Agent-把工单循环跑起来
java·agent·工具调用·spring ai