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 测试调用

相关推荐
云飞云共享云桌面10 分钟前
东莞精密机械制造工厂如何10个SolidWorks共用一台服务器资源
java·运维·服务器·网络·数据库·电脑·制造
小此方11 分钟前
C语言自定义变量类型结构体理论:从初见到精通(上)
c语言·开发语言
毕设源码-赖学姐16 分钟前
【开题答辩全过程】以 网络药店管理系统为例,包含答辩的问题和答案
java·eclipse
努力也学不会java16 分钟前
【Java并发】揭秘Lock体系 -- 深入理解ReentrantReadWriteLock
java·开发语言·python·机器学习
埃泽漫笔29 分钟前
消息队列延迟与过期问题的实战解决
java·mq
vxtkjzxt88830 分钟前
自动化脚本矩阵运营
开发语言·php
王严培.39 分钟前
7.MATLAB疑难问题诊疗的技术
开发语言·matlab·信息可视化
花花无缺1 小时前
资源泄露问题
java·后端·http
wjs20241 小时前
PHP MySQL 使用 ORDER BY 排序查询
开发语言
爱敲代码的TOM1 小时前
深入剖析Java通信架构下的三种IO模式2
java·开发语言·架构