Web services 无法读取WSDL错误

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

这是我第一次使用SOAP。我尝试使用cfinvoke调用Web服务,如下所示:

<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的文档

为了安装证书,您需要首先获得证书的副本。这可以通过使用Internet Explorer来完成。请注意,不同版本的Internet Explorer的行为略有不同,但应与这些步骤非常相似。例如,早期版本的IE可能会将证书保存在与我提到的不同的选项卡下

  • 浏览到Internet Explorer中的SSL URL-
    https://xyz/infoLookup.php?wsdl
  • 通过单击锁定图标并单击查看证书来查看证书
  • 然后单击安装证书。。。按钮(注意:如果您没有看到此按钮,则必须先关闭IE并以管理员身份运行)
  • 单击IE的Internet选项,然后单击内容选项卡
  • 单击证书按钮
  • 在“中间证书颁发机构”选项卡下找到服务器的证书,选择证书并单击导出。。。钮扣
  • 使用DER格式导出
  • 将导出的证书文件复制到ColdFusion服务器(如果需要,可以从IE中删除证书)

  • 在ColdFusion服务器上以管理员身份运行
    cmd
    提示符
  • 备份原始cacerts文件,以防遇到问题
  • keytool是Java SDK的一部分,可以在以下位置找到:

    • 服务器配置:

      cf_root/runtime/bin/keytool

    • JRun 4配置上的多服务器/J2EE:

      jrun_root/jre/bin/keytool

    • Sun JDK安装:

      jdk_root/bin/keytool

    • 请参阅其他J2EE应用程序服务器和JVM的文档

    要安装证书,请执行以下操作:

  • 将目录更改为信任库的位置(cacerts文件所在的位置)
  • 键入此命令(使用当前jvm并使用当前jvm的keytool)
    “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*将这些值更改为服务器文件夹和证书文件名所用的值

    要验证证书,请执行以下操作:

  • 键入此命令(使用当前jvm并使用当前jvm的keytool)
    “c:\program files\java\jre7\bin\keytool”-list-v-keystore cacerts-别名您的证书名称-storepass changeit
  • 注意:*您的_cert _别名_name*在此处使用与上面安装证书时使用的名称相同的名称

    重新启动ColdFusion服务在执行此操作之前,它不会读取更新的cacerts文件


    如果愿意,可以从服务器上删除导入的证书文件。

    我认为需要将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认证安装过程,