用Java调用WebService

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

附件在为webservice 依赖的jar包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值