Java axis 批量生成客户端程序 其余的WebService 或调用.net的wcf
Java axis 批量生成客户端程序 其他的WebService 或调用.net的wcf
Java axis(版本是axis1.4) 其他的WebService 或调用.net的wcf 参考 http://www.cnblogs.com/chrischen662/archive/2010/08/15/1800130.html
前提条件:已经将服务器端的WebService接口写好, 并将WebService服务启动
1、编写一个脚本,用来生成一些基本代码。例如编写如下一个脚本,并存为wcf.bat文件:
set Axis_Lib=axis-1_4\lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Output_Path=. set Package=wcf %Java_Cmd% org.apache.axis.wsdl.WSDL2Java http://localhost:8000/WebWcf/GetAccountService.svc?wsdl -o%Output_Path% -p%Package%
其中的lib为axis工具包中的lib目录,它包含了需要用到的Jar。在Dos下运行wcf.bat,即在当前目录中创建了目录wcf,并生成了java程序
2、写客户端测试程序:
package wcf; public class ClientTest { /** * @param args */ public static void main(String[] args) { try { GetAccountService client = new GetAccountServiceLocator(); Account account = new Account(); account = client.getBasicHttpBinding_IGetAccountService().getAccount("abc"); System.out.println("account="+account.getUserid()+";"+account.getUsername()); System.in.read(); } catch (Exception e) { System.out.println("Exception : " + e.getMessage()); } } }
附加:如果不用这种批量生成文件的方式, 也可以手工写客户端,不过手工这种方式要麻烦的多
public class Test01 { public static void main(String[] args) { try { String endpoint = "http://localhost:8080/WebService/services/HelloWorld?wsdl"; // 指明服务所在位置, system是webapp名,根据需要换成你自己的webapp Service service = new Service(); //创建一个Service实例,注意是必须的! Call call = (Call) service.createCall(); //创建Call实例,也是必须的! String returnStr = ""; call.setTargetEndpointAddress(endpoint); //为Call设置服务的位置 call.setOperationName(new QName("sayHello")); //要调用HelloWorld 中的方法名 returnStr = (String) call.invoke(new Object[] { "你好," });//传入的参数需要封装到object数组中,返回值可直接获取 System.out.println(returnStr); //打印输出结果 } catch (Exception ex) { ex.printStackTrace(); } } }