Java代码调用C#实现的Web服务

1.WebService项目结构

SimpleModel类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace DonetWS
{
    public class SimpleModel
    {
        public System.Int32 id
        {
            set;
            get;
        }

        public System.String str
        {
            set;
            get;
        }
    }
}

DonetWS.asmx代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace DonetWS
{
    /// <summary>
    /// DonetWS 的摘要说明
    /// </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 DonetWS : System.Web.Services.WebService
    {
        //测试传参
        [WebMethod]
        public string HelloWorld(string name)
        {
            return "Hello World, " + name;
        }

        //测试获取对象集合
        [WebMethod]
        public List<SimpleModel> getModelList()
        {
            List<SimpleModel> rsltData = new List<SimpleModel>();

            SimpleModel model = new SimpleModel();
            model.id = 1;
            model.str = "str1";
            rsltData.Add(model);

            model = new SimpleModel();
            model.id = 2;
            model.str = "str2";
            rsltData.Add(model);

            return rsltData;
        }
    }
}

  run起来:

2.使用Apache Cxf框架实现客户端调用

  

  在Java项目pom.xml 中加入:

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>3.0.3</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>3.0.3</version>
</dependency>

  jars:

  打开CMD, 在Cxf目录bin文件夹下

  运行: wsdl2java -p org.tempuri -d src -client http://localhost:26715/DonetWS.asmx?wsdl

  生成以下类:

  

  只留下这4个类, 放到java项目的 org.tempuri 包中

  Java项目结构

  CxfClient类代码

import java.util.List;
import java.util.ResourceBundle;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
import org.tempuri.ArrayOfSimpleModel;
import org.tempuri.SimpleModel;

public class CxfClient {

    public static ResourceBundle r = ResourceBundle.getBundle("config");
    public static DynamicClientFactory dcf = DynamicClientFactory.newInstance();
    public static Client client = dcf.createClient(r.getString("wsdlLocation"));

    public static void syncHelloWorld() {
        try {
            Object[] replys = client.invoke("HelloWorld", "darkdog");
            for (Object reply : replys) {
                String rsltData = (String) reply;
                System.out.println(rsltData);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void syncGetModelList() {
        try {
            Object[] replys = client.invoke("getModelList");
            for (Object reply : replys) {
                ArrayOfSimpleModel arrayOfSimpleModel = (ArrayOfSimpleModel) reply;
                List<SimpleModel> simpleModels = arrayOfSimpleModel.getSimpleModel();
                for(SimpleModel simpleModel : simpleModels) {
                    System.out.println(simpleModel.getId() + " " + simpleModel.getStr());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        syncHelloWorld();
        syncGetModelList();
    }
}

  config.properties:

wsdlLocation=http\://localhost\:26715/DonetWS.asmx?wsdl

  完成!

时间: 2024-11-05 15:57:00

Java代码调用C#实现的Web服务的相关文章

.net/java调用NuSOAP构建的Web服务

此文主要解决php下的web服务接受和返回复杂类型(自定义类型)该如何构建以及其他程序客户端如何来调用. 第一步:用NuSOAP组件来构建基于php的webservice 下载NuSOAP组件,在创建基于php的webservice时需要引用,代码如下,很简单直观,有注释就不多解释了: <?php require_once ('lib/nusoap.php'); // 返回的是一个数组 function adduser ($userName, $userAge, $birthday, $high

基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - 静态资源.视图和消息器>两篇博文的介绍,我们已经配置好了Spring所需的基本配置.在这边博文中,我们将介绍怎么使用这些配置到实际项目中,并将web.xml文件替换为一个Java类. 我们使用Java代码来配置Spring,目的就是使我们的这些配置能够复用,对于这些配置的复用,我们采用继承和引入来实现

通过Jersey客户端API调用REST风格的Web服务

Jersey 客户端 API 基础 要开始使用 Jersey 客户端 API,你首先需要创建一个 com.sun.jersey .api.client.Client 类的实例.下面是最简单的方法: import com.sun.jersey .api.client.Client;Client client = Client.create();Client 类是创建一个 RESTful Web Service 客户端的主要配置点.你可以使用它来配置不同的客户端属性和功能,并且指出使用哪个资源提供者

使用java代码调用exe程序 (包括参数传递)

使用Java代码调用exe 1使用场景 我现在使用eclipse+tomcat的架构建立了web server, 在这个web project中我需要建立一个定时任务,在定时任务中执行本地的一个C#工程生成的exe. 2Java代码 public class MyTask extends TimerTask { public void run() { System.out.println("call at " + (new Date())); // TODO æ­¤å¤?æ·»å? å

Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件

本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.HashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import

ubuntu下用java代码调用命令将java格式文件转换为html格式文件

首先我们应该在电脑上装上GNU Source-highlight 3.1.7,给个链接参考: http://www.gnu.org/software/src-highlite/#mozTocId120994 下面代码实现了 将java类型的代码转换为html文件类型的代码,如果java代码的文件名为 helloword.java,则转换为html格式的文件名为helloword.java.html,将java代码在浏览器上显示出来.其次我还将html文件中的内容提取出来,便于在html文件里编写

java代码调用数据库存储过程

由于前边有写java代码调用数据库,感觉应该把java调用存储过程也写一下,所以笔者补充该篇! package testSpring; import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet; import oracle.jdbc.OracleCalla

java程序调用xfire发布的webService服务(二)

在上一篇的调用xfire发布的webService服务中,我只是从服务端返回了一个字符串给客户端,却没有测试从客户端传递数据给服务端.而实际应用中一般是不太可能只出现这样的应用场景的,因此我便更进一步测试了客户端传递数据给服务端. 因为相关的jar包在上一篇已经说过,因此便不再重复说明,这次的测试步骤如下: 一.测试向服务端传递字符串(重点在第二个): 为了进一步理解服务搭建,我重新写了一个服务端服务类: 接口: package xfireTest; public interface XFire

java代码调用C代码 JNI

1 定义一个c方法的接口   相当于在java代码中定义了一个接口 接口的实现方法是C语言实现的 public native int login(String password); 2 实现C代码 在android工程的目录的src下,可以使用命令: (javah  -jni  全类名 )来生成对应C语言函数的头文件 #include <stdio.h>#include "com_qushaohui_aliwangwang_MainActivity.h" int login