日期:2014-05-20  浏览次数:20705 次

如何用Java调用WebService
公司的客户要与我们公司进行系统对接,只提供WebService的url,后面是以OrderRemote.wsdl结尾的。看到网上的一篇教程,有调用wsdd的,但如果客户给出的是wsdl,应该怎样调用?
请大家帮帮忙,谢谢!

------解决方案--------------------
建议你看看STUB
public class Db2Client {
public static void main(String [] args) throws Exception
{
ArrayList result = null; //ArrayList初始化
String QueryTerm = “select * from table”; //查询语句
Service service = new Service();
Call call = (Call) service.createCall();
QName qn = new QName(“urn:DB2STHD_HWService”,“Db2_STHD_HW”); //注册命名空间
call.registerTypeMapping(Db2_STHD_HW.class,qn,
new BeanSerializerFactory(Db2_STHD_HW.class, qn),
new BeanDeserializerFactory(Db2_STHD_HW.class, qn)); //自定义对象的序列化/反序列化
try{
call.setTargetEndpointAddress(new URL(“http://localhost:8080/axis/services/DB2STHD_HWService”)); //服务地址(wsdl描述地址)
call.setOperationName(new QName(“DB2STHD_HWService”,“getDB2Data”)); //调用服务函数
call.addParameter(“data”, qn, Db2_STHD_HW.class, ParameterMode.IN); //参数类型说明
call.setReturnClass(ArrayList.class); //返回类型说明
result = (ArrayList) call.invoke(new Object[]{ QueryTerm}); //得到返回的结果
for(int i = 0; i < result.size(); i++){ //对返回结果进行解析
Db2_STHD_HW sthw = (Db2_STHD_HW)result.get(i); //取得结果集中每一节点
System.out.println(sthw.getSTCD() +“ ”+sthw.getSTNM() +“ “ //的数据库的数据
+sthw.getSECTION() + " " + sthw.getSECTION_ID() + " "
+ sthw.getSORT() + " " + sthw.getTYPE());
}
}catch(Exception e) {
System.out.println( "Error : " + e.toString());
}
}
}
//------------------------------------------
其中有些方法是本人项目中的程序,你可以将其去掉,以上供你参考。
你也可以看看“STUB”方面,可以根据对方的服务写个客户端,只需要服务地址就可以调用服务。