`
thoreau
  • 浏览: 356389 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java调用WebService接口

 
阅读更多

转自:http://hi.baidu.com/pryzjvvpkkbhjyq/item/531530115837540de65c3631

 

 

这是一个用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 ()  {     }    [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!

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics