Java调用C#版WebService

这是一个用Java调用C#版WebService接口的例子:

C#接口:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Services.Description;


[WebService(Namespace = "http://www.tangs.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
    public Service () ...{

        //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }

    [SoapRpcMethod(Action = "http://www.tangs.com/Add", RequestNamespace = "http://www.tangs.com/T", ResponseNamespace = "http://www.tangs.com/T", Use = SoapBindingUse.Literal)]
    [WebMethod]
    public int Add(int a, int b)
    ...{
        return a + b;
    }

    [SoapRpcMethod(Action = "http://www.tangs.com/Hello", RequestNamespace = "http://www.tangs.com/T", ResponseNamespace = "http://www.tangs.com/T", Use = SoapBindingUse.Literal)]
    [WebMethod]
    public String HelloWorld()
    ...{
        return "Hello, world!";
    }
   
}
...
Java调用这个Webservice中的Add方法和HelloWorld方法:

1.有参方法:Add
public static void addTest() {
        try ...{
            Integer i = 1;
            Integer j = 2;
           
            //WebService URL
            String service_url = "http://localhost:4079/ws/Service.asmx";
           
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(new java.net.URL(service_url));
           
            //设置要调用的方法
            call.setOperationName(new QName("http://www.tangs.com/T", "Add"));
           
            //该方法需要的参数
            call.addParameter("a", org.apache.axis.encoding.XMLType.XSD_INT,
                    javax.xml.rpc.ParameterMode.IN);
            call.addParameter("b", org.apache.axis.encoding.XMLType.XSD_INT,
                    javax.xml.rpc.ParameterMode.IN);
           
            //方法的返回值类型
            call.setReturnType(org.apache.axis.encoding.XMLType.XSD_INT);
           
            call.setUseSOAPAction(true);
            call.setSOAPActionURI("http://www.tangs.com/Add");
           
            //调用该方法
            Integer res = (Integer)call.invoke(
                    new Object[]...{
                        i, j
                    }
            );
           
            System.out.println( "Result: " + res.toString());
           
        } catch (Exception e) ...{
            System.err.println(e);
        }
    }...运行,结果返回:Result:3

2.无参方法:HelloWorld
public static void helloTest() {
        try ...{
           
            String endpoint = "http://localhost:4079/ws/Service.asmx";
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(new java.net.URL(endpoint));
            call.setOperationName(new QName("http://www.tangs.com/T", "HelloWorld"));

            call.setUseSOAPAction(true);
            call.setSOAPActionURI("http://www.tangs.com/Hello");
           
           
            String res = (String)call.invoke(
                    new Object[]...{
                        null
                    }
            );
           
           
            System.out.println( "Result: " + res);
        } catch (Exception e) ...{
            System.err.println(e.toString());
        }
    }...可以看到,调用无参的webservice和有参的基本相同,不过无参调用时,不需要调用Call的addParameter方法和setReturnType方法
执行结果返回:Hello, world!


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tangshuo/archive/2007/10/15/1825808.aspx

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值