Web services 无法读取WSDL错误
这是我第一次使用SOAP。我尝试使用cfinvoke调用Web服务,如下所示:Web services 无法读取WSDL错误,web-services,soap,coldfusion,wsdl,coldfusion-8,Web Services,Soap,Coldfusion,Wsdl,Coldfusion 8,这是我第一次使用SOAP。我尝试使用cfinvoke调用Web服务,如下所示: <cfinvoke webservice="https://xyz/infoLookup.php?wsdl" method="infoLookup" returnVariable="info" > <cfinvokeargument name="phoneNumber" value="7182973186"/> <cfinvok
<cfinvoke
webservice="https://xyz/infoLookup.php?wsdl"
method="infoLookup"
returnVariable="info"
>
<cfinvokeargument name="phoneNumber" value="7182973186"/>
<cfinvokeargument name="userName" value="12345"/>
<cfinvokeargument name="password" value="password"/>
</cfinvoke>
<cfdump var="#info#">
下面是来自WSDL的消息名称的一部分:
<message name="infoLookupRequest">
<part name="phoneNumber" type="xsd:string" />
<part name="userName" type="xsd:string" />
<part name="password" type="xsd:string" />
</message>
下面是WSDL中操作名称的一部分:
<portType name="vtsInfoLookupPortType">
- <operation name="infoLookup">
<documentation>Get phone number information.</documentation>
<input message="tns:infoLookupRequest" />
<output message="tns:infoLookupResponse" />
</operation>
</portType>
-
获取电话号码信息。
我得到以下错误:
Unable to read WSDL from URL: https://xyz/infoLookup.php?wsdl.
Error: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated.
The error occurred in C:\XYZ\A\Soap\soapreq.cfm: line 37
35 : <cfinvokeargument name="phoneNumber" value="7182973186"/>
36 : <cfinvokeargument name="userName" value="12345"/>
37 : <cfinvokeargument name="password" value="password"/>
38 : </cfinvoke>
39 :
无法从URL读取WSDL:https://xyz/infoLookup.php?wsdl.
错误:javax.net.ssl.SSLPeerUnverifiedException:对等未经身份验证。
错误发生在C:\XYZ\A\Soap\soapreq.cfm:第37行
35 :
36 :
37 :
38 :
39 :
我曾尝试在线搜索错误,但无法找出代码中的错误。如果我做错了什么,请告诉我以下是将证书安装到Java keystore for ColdFusion时需要执行的步骤。首先,确保您正在更新ColdFusion使用的正确cacerts文件。如果您在该服务器上安装了多个JRE。您可以从“系统信息”下的管理员处验证JRE ColdFusion是否正在使用。寻找Java主页 默认的信任库是JRE的cacerts文件。此文件通常位于以下位置:
- 服务器配置: cf_root/runtime/jre/lib/security/cacerts
- JRun 4配置上的多服务器/J2EE: jrun_root/jre/lib/security/cacerts
- Sun JDK安装: jdk_root/jre/lib/security/cacerts
- 请参阅其他J2EE应用程序服务器和JVM的文档
https://xyz/infoLookup.php?wsdl
cmd
提示符- 服务器配置: cf_root/runtime/bin/keytool
- JRun 4配置上的多服务器/J2EE: jrun_root/jre/bin/keytool
- Sun JDK安装: jdk_root/bin/keytool
- 请参阅其他J2EE应用程序服务器和JVM的文档
“c:\program files\java\jre7\bin\keytool”-import-v-alias您的证书别名-文件c:\where\u您保存的文件\cert\u file.cer-密钥库cacerts-storepass changeit
注意:*C:\保存\u文件的位置\u\cert\u file.cer*将这些值更改为服务器文件夹和证书文件名所用的值 要验证证书,请执行以下操作:
“c:\program files\java\jre7\bin\keytool”-list-v-keystore cacerts-别名您的证书名称-storepass changeit
如果愿意,可以从服务器上删除导入的证书文件。我认为需要将SSL证书导入coldfusion信任存储。但是在此之前,我是否在代码中正确地传递了变量?是的,如果它在SSL后面,那么ColdFusion将需要证书来与它通信。你的代码看起来不错,为什么不试试呢?此外,您应该能够自己浏览WSDL,以在运行代码之前验证是否可以获得它。只需浏览到
https://xyz/infoLookup.php?wsdl
看看会发生什么。当我浏览WSDL时,它工作正常。WSDL正在Internet Explorer中打开。我相信我仍然必须将证书导入Coldfusion信任存储。@Miguel-F您的意思是,如果WSDL在web浏览器中打开,那么我就不应该卷入导入证书的麻烦中?@nitantkumar不,这不是我的意思。我只是想通知您,您可以通过浏览来测试WSDL的可访问性。我相信您是正确的,ColdFusion需要导入证书才能访问它。请确保将证书导入到正确的Java版本keystoreThank您可以从Miguel F获得非常好的描述。我成功地安装了它,并在验证后看到了它的列表。好的,现在我已经在Coldfusion Truststore中找到并完成了SSL认证安装过程,