java - 独立的 Java Web 服务客户端

标签 java web-services soap wsdl

总的来说,我是网络服务的新手。我正在尝试编写一个 Java 独立客户端,它可以从网络服务获得响应。

我尝试搜索 SO 和 Google,但现在我更加困惑了。以下是我广泛浏览的链接。

我有一个像这样的网址:http://api.something.com/remote/wsdl/SomeEncryptedText

我还有一个类似 SOAP 的请求:

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
<soap12:Body> 
<AuthUsername>someName@someWhere.com</AuthUsername> 
<AuthPassword>mypassword</AuthPassword> 
<Sid>12121</Sid> 
<DynamicProductFeedsRequest xmlns="http://api.something.com/remote/SomeEncryptedText"> 
</DynamicProductFeedsRequest> 
</soap12:Body> 
</soap12:Envelope> 

有了这个,我如何编写一个独立的 Java 客户端,我想在稍后阶段将其与某些 Web 应用程序集成?

从前面提到的资源来看,有多种软件可供选择:SoapUI、WSDL2Java、Apache Axis、Maven Plugin、JAX-WS、Apache CXF。

我用了http://www.soapclient.com/soaptest.html在上面提到的 SO 答案之一中,我能够在浏览器上获得完美的 html/xml 文件。

现在我很困惑我应该使用哪个软件?链接中的信息很少,我无法将它们相互关联,因为我对 SOA 一无所知。

谁能告诉我编写一个独立的 Java 客户端的高级步骤,该客户端接受 WSDL URL 和 SOAP 请求并将其输出给我?

如果我遗漏了任何信息,请告诉我。

最佳答案

这个问题完全取决于以下内容:

  • Java 编译器的 JDK 版本。
  • 您的 WSDL 版本(有 1.0、1.2 和 2.0)。

基本上,如果您使用 Java annotations要生成 Web 服务,则需要 Java 5 相关的 Web 服务库(支持注解)。

关于使用带注释的 Java Web 服务 (JAX-WS) 的一些文章:

我将从使用 支持注释的 Java 生成 Web 服务客户端开始。为 Java 生成 WSDL 的著名客户端是 Apache Axis (最后一个版本是 2006 年 4 月 22 日发布的 1.4)。这基本上采用 WSDL 定义并将其生成回客户端。它支持旧版本的 WSDL (1.0),如果您使用较新版本的 WSDL(1.2 和 2.0),它会崩溃。

这基本上是做什么的,它获取您的 WSDL 并生成一个与您的 Web 服务通信的 java 代理。它可以允许基于 RPC 以及基于 XML 的通信。

对于支持注解的 Java,有两种有效的方法:

  • 使用 Java 自己的 wsimport 命令(可执行文件位于 JDK_HOME/bin/ 文件夹下)。
  • 使用第 3 方库,例如 Apache Axis 2 (它有效地取代了 Apache Axis 并支持 WSDL 2.0 版)或 Apache CXF (支持最高 1.2 的 WSDL)。

要使用 wsimport,您基本上需要转到 shell 命令(或编写脚本)并有效地执行以下操作:

wsimport -d [outputdir] wsdl_file

您的 java 代理将在 [outputdir] 文件夹中找到。

wsimport 是在JDK 1.6 中找到的(不知道之前的版本有没有)。更多来源here , 和 here .

对于 Apache Axis、Apache Axis 2 或 Apache CXF,有一个 WSDL2Java 类文件可以生成源代码。

这是关于如何在 Apache CXF 中使用 WSDL2Java 的指南在Apache Axis 2 .

我希望这能在某种程度上帮助你,就像我花了大约 30 分钟的时间做这件事一样。 :-)

关于java - 独立的 Java Web 服务客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3666574/

相关文章:

php - 如何在 xampp (php version : 7. 1.11) 中启用soapclient?

php - 使用 PHP 调用 Python 网络服务

java - lambda 表达式应该是最终的 FOR LOOP

java - 如何在不更改其位置的情况下旋转图形对象?

iphone - 如何验证 iPhone 应用程序向我的 Web 服务发出的请求的真实性

javascript - 在 JavaScript 中解析命名空间

java - 在云环境中,使用哪些技术让客户端上传要处理的文件有什么好方法?

java - 无法在 Spring boot 中使用 @bean 内的 @value

c# - WebMethod 中的 CacheDuration 被忽略

ruby - Savon皂体问题