这篇文章和那个读取天气预报的类似.
首先你需要根据WebService的描述,即WSDL语言生成本地的访问文件(java文件)。你需要用的axis中的org.apache.axis.wsdl.WSDL2Java,关于这个的使用网上有很多教程,这里我就最简单的描述一下使用方式,编写一个bat文件:
set AXIS_HOME=C:\Program Files\Java\axis-1_4
set CLASSPATH=.;%AXIS_HOME%\lib\axis.jar;%AXIS_HOME%\lib\axis-ant.jar;%AXIS_HOME%\lib\commons-discovery-0.2.jar;%AXIS_HOME%\lib\commons-logging-1.0.4.jar;%AXIS_HOME%\lib\jaxrpc.jar;%AXIS_HOME%\lib\log4j-1.2.8.jar;%AXIS_HOME%\lib\saaj.jar;%AXIS_HOME%\lib\wsdl4j-1.5.1.jar
java org.apache.axis.wsdl.WSDL2Java -p com.test http://localhost:8088/axis/HelloWorld.jws?wsdl
关于参数-p:打包的意思,后面就是包名。其实后面的那个url地址换成磁盘上的wsdl文件也是可以的。
然后会在你的bat文件所在文件夹下生成一个com文件夹,里面按照src方式存有源码,你需要把com文件拷到新建工程的src下。
然后在写一个MyClient类来通过存根读取webservice上面的内容:
package client;
import java.rmi.RemoteException;
import com.test.HelloWorldService;
import com.test.HelloWorldServiceLocator;
import com.test.HelloWorld_PortType;
import javax.xml.rpc.ServiceException;
public class MyClient {
public static void main(String[] args) {
HelloWorldService hs = new HelloWorldServiceLocator();
HelloWorld_PortType hcpt;
try {
hcpt = hs.getHelloWorld();
System.out.println(hcpt.sayHello("胡阳"));
} catch (ServiceException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}