java call web service which is c# coding 收藏
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!
本文来自博客,转载请标明出处:http://blog.csdn.net/DragonTang/archive/2009/04/03/4046088.aspx