日期:2014-05-17  浏览次数:20783 次

java如何调用webservice接口
webservice接口文档如下

queryUserAmount方法
参数名称 参数类型 参数说明
userName String 用户名
passWord String 密码


返回值说明:
<?xml version="1.0" encoding="utf-8" ?> 
<double xmlns="http://www.test.com/">10</double>
说明:接口返回一个double类型值。
此处的值表示余额条数。如 3 (余额 3 条)。
本处返回数值 10 。意思是还有余额 10 条短信。

我的java程序如下:
public static void main(String[] args) {
  String url = "http://www.test.com/textServices/textService.asmx?wsdl";
  Service service = new Service();
  try {
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(url);
call.setOperationName("GetBalance");
  call.addParameter("userName",
  org.apache.axis.encoding.XMLType.XSD_STRING,
  javax.xml.rpc.ParameterMode.IN);
call.addParameter("passWord",
  org.apache.axis.encoding.XMLType.XSD_STRING,
  javax.xml.rpc.ParameterMode.IN);
  //注:这里的参数我一直不知道怎么写
// 方法的返回值类型
  call.setReturnType(org.apache.axis.encoding.XMLType.XSD_INT);
  call.setUseSOAPAction(true);
  call.setSOAPActionURI("http://www.text.com/queryUserAmount");
  String userName = "admin";
  String uesrPassWord = "1234";
  String result = (String)call.invoke(new Object[]{userName,uesrPassWord});

  //给方法传递参数,并且调用方法
  System.out.println("result is "+result); 
} catch (ServiceException e) { 
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

这是我的程序,请问正确的程序应该怎么写呢。我不会用java调用webservice。谢谢了。。

------解决方案--------------------
调用webservice也很简单
C# code
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress("http://www.test.com/textServices/textService.asmx?wsdl");
factory.setServiceClass(IUnionServer.class);
return (IUnionServer) factory.create();