Web 服务客户端概述

Web 服务通常通过 HTTP 协议使用 SOAP。在此情况下,将发送 SOAP 信封。集合和其他复杂对象在 SOAP 信封中捆绑时,ASCII 数据结构会变得难以读取和编辑。初级开发人员不应尝试直接操作 SOAP 信封来构建 Web 服务客户端。经验丰富的开发人员通常不会在 SOAP 信封级别构建 Web 服务客户端。这样操作很枯燥,且容易出错。因此,所有主要的编程语言均提供 Web 服务开发包。在 Silk Central 中,Java API for XML Web Services (JAX-WS) 用于构建使用 SOAP 消息进行通信的 Web 服务和客户端。

无论是哪一种实施语言(Java、C++、C#、Perl 或 Python),构建 Web 服务客户端通常遵循相同的模式:

  1. 指定 Web 服务 WSDL 的开发工具包工具。
  2. 返回客户端存根。
  3. 编辑步骤 2 中生成的客户端存根以获取成熟的客户端。
JAX-WS 遵循这种模式。在此,wsimport 工具(与 JDK 捆绑在一起)用于从 WSDL 构建客户端存根。可以在 JDK 工具和实用程序文档中找到有关如何使用 wsimport 的详细信息。 A brief description of the switches used in the above summary is as follows:
  • -s:客户端存根的输出目录
  • -p:目标包。部署至此包结构

示例:wsimport -s <生成的存根位置> -p <目标包> <WSDL>

wsimport 工具生成多种类,以支持 Web 服务的客户端。如果 YourWebService是服务的名称,则可以预期以下类别输出:

要生成 JAX-WS 客户端以访问 Silk Central Web 服务,请创建一个名为 YourWebServiceClient 的新 Java 类。必须通过一个端口绑定到 Web 服务;端口是本地对象,用作远程服务代理。请注意,端口是通过在上一步中执行 wsimport 工具创建的。要检索此代理,请对服务调用 getRequirementsServicePort 方法:

// Bind to the Requirements service
  RequirementsServiceService port = new RequirementsServiceService
    (new URL("http", mHost, mPort, "/Services1.0/jaxws/requirements?wsdl"));
  RequirementsService requirementsService = port.getRequirementsServicePort();

要使用 Web 服务进行身份验证,请在 Silk Central UI 的用户设置页面中生成 Web 服务令牌。要访问此页面,请将鼠标光标悬停在 Silk Central 菜单中的用户名上,然后选择用户设置

您还可以通过传递用户名和密码来调用服务的 logonUser 方法,以获取会话 ID:

// Login to Silk Central and get session ID
  String sessionId = requirementsService.logonUser(mUsername, mPassword);