用Java调用C#的WebService接口

这是一个用Java调用C#版程序的例子,废话不多说,上代码:

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!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小哭包

创作不易,给作者加个鸡腿吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值