这是一个用java的调用c#版的webservice接口的例子:
c#接口:
<span style="font-size: 11px;">
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!";
}
}
...</span>
java的调用这个web服务中的添加方法和helloworld的方法:
1,有参方法:添加
<span style="font-size: 11px;">
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);
}
}...
</span>
运行,结果返回:结果:3
2.无参方法:的helloworld
<span style="font-size: 11px;">
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());
}
}...
</span>
可以看到,调用无参的web服务和有参的基本相同,不过无参调用时,不需要调用呼叫的addparameter方法和setreturntype方法
执行查询查询结果报道查看:你好,世界!
附件在为web服务依赖的jar包