0

我正在使用包含 jaxws-rt-2.1.4.jar 的基于 java 的工具来访问 Web 服务。我可以以正确的结果成功访问 https Web 服务,但我希望在检索 wsdl 并在 Fiddler 中调用服务时看到 https 请求和响应。
JVM 参数包括以下内容:

-DproxySet=true -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888
-Djavax.net.ssl.trustStore=C:\test\xxx.jks -Djavax.net.ssl.trustStorePassword=pw

密钥库包含访问 Web 服务所需的证书,如前所述,这可以正常工作。代理设置指向 Fiddler,因此我希望不仅可以看到启动调用 Web 服务的作业的工具前端(托管在http://localhost:8080上)的 http 请求+响应,还可以看到 https 请求+响应。

我用于检索 WSDL 和调用服务的代码是

url = "https://www.eway.com.au/gateway/rebill/test/manageRebill_test.asmx?wsdl"
Definition definition = WSDLFactory.newInstance().newWSDLReader().readWSDL(url);
... other code creating the envelopeXML ...
URL wsdlLocation = new URL(url);
Source result =
    Service.create(wsdlLocation, serviceQName).createDispatch(
        portQName,
        Source.class,
        Service.Mode.MESSAGE).invoke(new StreamSource(new StringReader(envelopeXML))));

当 url 是 http 时,http://www.webservicex.net/periodictable.asmx?wsdl我确实在 Fiddler 中看到了请求+响应。
我的设置中缺少什么会在 Fiddler 中显示 WSDL 检索和服务调用的 https 请求+响应?也许它需要额外的或不同的 JVM 设置?还是证书问题 - 我是否必须向 Fiddler 提供证书并让 Fiddler 基于它颁发证书,该证书用于密钥库而不是原始证书?

4

1 回答 1

0

好吧,这对我来说应该是显而易见的——但是再次没有观众看到它 :-)
我需要添加以下 JVM 参数:

-DproxySet=true -Dhttps.proxyHost=127.0.0.1 -Dhttps.proxyPort=8888

通过这种方式,Fiddler 捕获了 https 请求+响应。

于 2012-04-09T20:26:24.460 回答