文章目录
- 前言
- [1.c#创建asp.net web服务](#创建asp.net web服务)
- 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();
}