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

本文介绍了一个具体的例子,展示了如何使用Java来调用C#编写的WebService接口,包括有参方法Add和无参方法HelloWorld的调用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个用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!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值