基于Axis的Web Service客户端调用

本文通过http://www.webxml.com.cn网站的2500多个城市天气预报来演示如何编写Web Serivce客户端.
第一步:基于服务端生成客户端要使用的类文件。
执行WebService工具文件夹下的"wsdl产生实体.bat"文件。
------wsdl产生实体.bat文件内容--------------
java -cp .\lib\activation.jar;.\lib\mail.jar;.\lib\axis.jar;.\lib\axis.jar;.\lib\commons-discovery-0.2.jar;.\lib\commons-logging-1.0.4.jar;.\lib\jaxrpc.jar;.\lib\log4j-1.2.8.jar.\log4j.properties;.\lib\saaj.jar;.\lib\wsdl4j-1.5.1.jar org.apache.axis.wsdl.WSDL2Java -s " http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"

pause;
----------文件结束-----------------------------
红色部分可以替换成你要访问的服务端路径。
执行后,会自动生成有路径的类文件。这是客户端调用的基础。
第二步:将生成的类文件连同文件夹一同考入工程中,同时将lib文件夹下的jar文件加入工程lib库。
第三步:编写调用类
public static void main(String[] args){
WeatherWebServiceSoapStub binding;
try{
binding = (WeatherWebServiceSoapStub) new WeatherWebServiceLocator().getWeatherWebServiceSoap();
} catch (javax.xml.rpc.ServiceException jre) {
if (jre.getLinkedCause() != null)
System.out.println("binding err");
jre.getLinkedCause().printStackTrace();
throw new junit.framework.AssertionFailedError(
"JAX-RPC ServiceException caught: " + jre);
} try {
String[] result = binding.getWeatherbyCityName("上海").getString();
System.out.println("上海未来三天的天气情况");
for(String r:result){
System.out.print(r);
}

} catch (Exception e) {
System.out.println("服务端出现问题,请修改");
e.printStackTrace();

}
}
//细心的朋友请注意类名的特点,它有助于你编写任何WebService客户端

你可能感兴趣的:(apache,Web,log4j,webservice,JUnit)