English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 威盾新闻 >> Java语言实现Web服务请求

 

Java语言实现Web服务请求

威盾防火墙 2015-02-25

 

A Java Requester of the Web Service

就实现功能而言,示例1-9和前面分别在示例1-5和1-6中,由Perl及Ruby语言实现的客户端相同。

示例1-9:Java语言实现的Web服务客户端

  1. package ch01.ts;  
  2.  
  3. import javax.xml.namespace.QName;  
  4. import javax.xml.ws.Service;  
  5. import java.net.URL;  
  6. class TimeClient {  
  7.     public static void main(String args[ ]) throws Exception {  
  8. URL url = new URL("http://localhost:9876/ts?wsdl");  
  9.  
  10. // Qualified name of the service:  
  11. //   1st arg is the service URI  
  12. //   2nd is the service name published in the WSDL  
  13. QName qname = new QName("http://ts.ch01/""TimeServerImplService");  
  14.  
  15. // Create, in effect, a factory for the service.  
  16. Service service = Service.create(url, qname);  
  17.  
  18. // Extract the endpoint interface, the service "port".  
  19. TimeServer eif = service.getPort(TimeServer.class);  
  20.    
  21. 示例1-9:Java语言实现的Web服务客户端(续例)  
  22. System.out.println(eif.getTimeAsString());  
  23. System.out.println(eif.getTimeAsElapsed());  
  24.    }  

这个Java客户端所用到的带有查询字符串的URL地址同前面由Perl和Ruby语言实现的客户端是一样的,不同地是Java客户端明确地创建了一个语法格式为"URI:本地名称"的XML限定名。URI是统一资源定位符(Uniform Resource Identifier)的缩写,和前面经常遇到的URL是有区别的,通常情况下URL需要指定具体的资源位置,而URI不需要。简单地说,一个URI不一定就是一个URL。目前我们只要清楚Java类java.xml.namespace.Qname用来表示一个XML限定名就可以了。在本类中的命名空间URI在WSDL文档中提供,本地名称是SIB的实现类TimeServerImpl名称加上"Service",即:TimeServerImplService。本地名称在WSDL文档最后一段的Service元素中描述。

分别构建好URL和Qname对象后,然后调用Service.create方法,执行如下代码:

  1. TimeServer port = service.getPort(TimeServer.class); 

回想前面的WSDL文档,portType一节所描述的内容,包括在Web服务操作方法中的接口定义风格。getPort方法返回一个Java对象,可以通过此对象调用portType中描述的操作。getPort返回的对象引用是一个ch01.ts.TimeServer实例,也就是前面定义的SEI类型。Java客户端,同Perl客户端一样,调用了这两个服务方法,同时Java底层支持库同Perl和Ruby支持库一样"透明"地产生并处理SOAP消息交换,完成对服务操作方法的成功调用。


相关内容: 最新内容:
浅析Web安全[2015-02-25]
Web服务器配置缺陷[2015-02-25]
新建Web网站与新建Web应用程序的区别[2015-02-25]
IIS服务器静态网页采用HTTP 压缩[2015-02-24]
关于IIS7 拥有有效的管理工具讲解[2015-02-24]
IIS7.0的改进之核心的改进讲解[2015-02-24]