【问题标题】:Create a client with Apache cxf, soapUI(or Eclipse) and Fiddler使用 Apache cxf、soapUI(或 Eclipse)和 Fiddler 创建客户端
【发布时间】:2015-09-07 21:49:46
【问题描述】:

我的目标是使用 Apache CXF 为 Web 服务创建客户端,该客户端位于我只能通过腻子隧道到达的主机 (https://serverOutOfThisWorld) 中。

L8400 -> serverOutOfThisWorld:443

我在主机中添加了以下内容:

 localhost serverOutOfThisWorld

所以我可以把我的浏览器放进去

https://serverOutOfThisWorld:8400/Bus/SomeWebService?wsdl

现在,我可以毫无问题地从 Web 浏览器访问这个 wsdl。但是这个 WSDL 有一些指向这个网络的导入,例如:

 <xsd:import namespace="http://inter.es/scsp/esquemas/datos" 
        schemaLocation="https://serverOutOfThisWorld/scehma/data.xml"/>
 <xsd:import ....

因此,下一步是使用 Fiddler 尝试将任何对 serverOutOfThisWorld:433 的调用映射到我的 serverOutOfThisWorld:8400。好的,我在 Tools/HOSTS 选项中创建了这个:

serverOutOfThisWorld:8400 serverOutOfThisWorld

现在,我可以在浏览器中导航到这个 url: https://serverOutOfThisWorld/Bus/SomeWebService?wsdl

并且,通过在 SoapUI 中定义的代理来使用 Fiddler,我可以基于该 URL 创建一个 New->Soap 项目。

但是当我尝试使用 SoapUI 和工具>Apache CFX 创建客户端时,我的问题就出现了。似乎这些 URL 没有被覆盖。在soapUI 日志中,我看到:

Mon Jun 22 14:07:22 CEST 2015:INFO:command: [cmd.exe, /C, wsdl2java.bat, -p, my.packages, -d, C:\eclipsewks\PruebaWS\src, -client, -exsh, false, -dns, true, -dex, true, -verbose, https://serverOutOfThisWorld:443/Bus/SomeWebService?wsdl]

似乎在 cmd/wsdl2Java 中没有使用 fiddler...

其他选项正在尝试使用 eclipse.. 但最后,eclipse 还使用 wsd2java 来创建客户端。我能做些什么?

【问题讨论】:

    标签: eclipse cxf soapui fiddler wsdl2java


    【解决方案1】:

    这可能不是您问题的直接答案。让我试着解释一下当我处于这种情况时我会做什么。

    我只是将所有 Wsdl 和 xsd 文件下载到同一个目录,而不是使用代理和重定向。之后,我用简单的文件名更新所有导入语句。由于所有文件都在同一个目录中,我只在导入语句中使用名称,不需要其他路径定义。

    如果我想使用 SoapUI,我只需使用我的 WSDL 版本,然后根据需要将端点更新为真实的端点(在您的情况下,这将是提琴手地址)。

    如果我想生成 java 客户端,我只需使用带有wsdl2java 的命令行。同样,在使用此客户端时,我会相应地覆盖其连接地址。

    【讨论】:

    • 我是 wsdl 和定义的新手,我不确定在生成的类中更改端点。此外,使用命令行中的 wsd2java 和本地 wsdl,我有很多错误(具有相同名称的元素类等),尽管它可能与 awsdl lcal/remote 无关。在这一点上,我试图接近服务器上的 WSDL 定义。另外,我不能有一个固定的 Endpoint,因为我们有 3 个环境(Test、Pre 和 Pro),无论如何,谢谢你的评论,这将是我的最后一个子弹.. :)
    【解决方案2】:

    最后,我设法解决了这个问题。您必须编辑 wsdl2java(.bat 或 sh)并设置选项以使 Fiddler 中的代理正常工作:

    "%JAVA_HOME%\bin\java" -Xmx128M -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888 -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8888
    

    现在我有其他问题(具有相同的类名),但这是另一个问题(可能通过绑定名称或其他东西解决)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2014-12-12
      • 2017-06-13
      • 1970-01-01
      相关资源
      最近更新 更多