这是我第一次使用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 :

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

最佳答案

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



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

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

    将导出的证书文件复制到您的ColdFusion服务器(如果需要,可以从IE删除证书)
  • 以管理员身份在ColdFusion服务器
  • 上运行cmd提示符
  • 备份原始cacerts文件,以防遇到问题



  • 要安装证书:
  • 将目录更改为信任库的位置(cacerts文件所在的位置)
  • 键入此命令(使用当前的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
  • 在提示符下键入“是,是否信任此证书?”

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

    验证证书:
  • 键入此命令(使用当前的jvm并使用当前的jvm的keytool)"c:\program files\java\jre7\bin\keytool" -list -v -keystore cacerts -alias your_cert_alias_name -storepass changeit

  • 注意:*您的cert_alias_name *在此处使用与上面用于安装证书的名称相同的名称

    重新启动ColdFusion服务,直到执行此操作才读取更新的cacerts文件。

    您可以根据需要从服务器中删除导入的证书文件。

    关于web-services - 无法读取WSDL错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19412530/

    10-11 20:11