客户端调用webservice3——客户端编程方式访问
对比: ①采用wsimport方式调用webservice,生成的代码量过多 ②采用UrlConnection方式调用webservice,需要手动来解析服务器返回的xml格式数据 ③所以现在采用一种折中的方式,客户端编程方式 |
①wsimport -s . -p cn.zengfansheng.client http://localhost:8080/sayhello?wsdl ②然后将生成的接口文件Hello.java拷贝的项目中去,(接口文件名是提供服务的名称) ③通过Service静态方法创建对象 ④QName ⑤然后调用服务提供的方法 |
代码: package cn.zengfansheng.client;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class MyApp {
public static void main(String[] args) throws Exception {
//1、wsdl地址
URL wsdlDocumentLocation = new URL("http://localhost:8080/sayhello?wsdl");
//2、namespaceURI:wsdl文档中definitions节点targetNamespace属性的值
String namespaceURI = "http://publish.webservice.zengfansheng.cn/";
//3、localPart:wsdl文档service节点name属性值
String localPart = "HelloService";
QName serviceName = new QName(namespaceURI, localPart );
Service service = Service.create(wsdlDocumentLocation, serviceName);//获得Service对象的实例
//4、参数二:service节点下的port节点name属性值
QName portName = new QName(namespaceURI, "HelloPort");
Class<Hello> serviceEndpointInterface = Hello.class;
Hello hello = service.getPort(portName, serviceEndpointInterface);
String hi = hello.sayHello("hacket");
System.out.println(hi);//Hello,hacket
System.out.println(hello.getClass().getSimpleName());//$Proxy26
}
} |