无法读取WSDL错误

时间:2013-10-16 19:53:28

标签: 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"/>
    <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 :  

我试图在线搜索错误,但无法弄清楚我的代码中出了什么问题。如果我做错了,请告诉我

1 个答案:

答案 0 :(得分:1)

以下是为了将证书安装到ColdFusion的Java密钥库而需要执行的步骤。首先,确保您正在更新ColdFusion正在使用的正确cacerts文件。如果您在该服务器上安装了多个JRE。您可以在“系统信息”下验证管理员使用的JRE ColdFusion。查找Java Home行。

  

默认信任库是JRE的cacerts文件。此文件通常位于以下位置:

     
      
  • 服务器配置:

         

    cf_root /运行/ JRE / LIB /安全/ cacerts中

  •   
  • JRun 4配置上的Multiserver / J2EE:

         

    jrun_root / JRE / LIB /安全/ cacerts中

  •   
  • Sun JDK安装:

         

    jdk_root / JRE / LIB /安全/ cacerts中

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

  •   

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

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

    1. 在ColdFusion服务器上以管理员身份运行cmd提示
    2. 备份原始cacerts文件,以防您遇到问题
    3.   

      keytool是Java SDK的一部分,可以在以下位置找到:

           
          
      • 服务器配置:

             

        cf_root /运行/ bin中/密钥工具

      •   
      • JRun 4配置上的Multiserver / J2EE:

             

        jrun_root / JRE / bin中/密钥工具

      •   
      • Sun JDK安装:

             

        jdk_root / bin中/密钥工具

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

      •   

      安装证书:

      1. 将目录更改为您信任库的位置(cacerts文件所在的位置)
      2. 输入此命令(使用当前jvm并使用当前jvm的keytool)"c:\program files\java\jre7\bin\keytool" -import -v -alias your_cert_alias_name -file C:\wherever_you_saved_the_file\cert_file.cer -keystore cacerts -storepass changeit
      3. 在“信任此证书?”
      4. 的提示符下键入yes

        注意:* your_cert_alias_name *我上面使用的可以是你想要的任何东西 注意:* C:\ wherever_you_saved_the_file \ cert_file.cer *将这些值更改为用于服务器文件夹和证书文件名的任何值

        验证证书:

        1. 输入此命令(使用当前jvm并使用当前jvm的keytool)"c:\program files\java\jre7\bin\keytool" -list -v -keystore cacerts -alias your_cert_alias_name -storepass changeit
        2. 注意:* your_cert_alias_name *在此处使用与上面用于安装证书相同的名称

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

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