这是一个用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方法文章来源:https://www.toymoban.com/news/detail-650851.html
执行结果返回:Hello, world!文章来源地址https://www.toymoban.com/news/detail-650851.html
到了这里,关于用Java调用C#的WebService接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!