【问题标题】:Apigee Fetch WSDL Error Could not download resource peer not authenticatedApigee Fetch WSDL 错误无法下载资源对等体未通过身份验证
【发布时间】:2014-07-07 04:53:33
【问题描述】:

第一

问题: 无法通过导入现有的 SOAP WSDL 添加新的 API 代理

错误: 获取 WSDL 错误:无法下载资源。对等体未通过身份验证

我的看法: 我怀疑是由 WSDL 结构包含从另一个链接派生的导入 XSD 引起的。

<xsd:import namespace="http://XXX/message" schemaLocation="https://XXX:123/xxxservices/XxxWebService?xsd=1"/>

尝试修改我的 WSDL,而不是使用从外部 URL 导入,我将整个 XSD 结构复制到 WSDL 中。有效!

问题: 验证过程背后的问题是什么?供参考。我还将证书导入我的 Java 信任库 (cacerts)

第二

问题: 成功导入 WSDL 后很少有元素/参数没有填充

我的 WSDL 的一部分:

<xs:complexContent>
  <xs:extension base="ns:UserDetailsRequest">
    <xs:sequence>

<xs:extension base="ns:UserDetailsRequest">
  <xs:sequence>
    <xs:element name="password" type="xs:string" minOccurs="0"/>
    <xs:element name="userID" type="xs:string" minOccurs="0"/>
 </xs:sequence>

我的看法:

我发现Apigee没有填充密码和用户ID的参数,我怀疑这个问题是由实现XML扩展基础组件引起的

问题:

如何解决缺少参数的问题?

谢谢!

我的整个 WSDL 如下:

<?xml version='1.0' encoding='UTF-8'?>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webservice.docx.abc.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://webservice.docx.abc.com/" name="XyzWebService">
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webservice.docx.abc.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://webservice.docx.abc.com/" name="XyzWebService">
<types>  
<xsd:schema>
<xsd:import namespace="http://webservice.docx.abc.com/message" schemaLocation="https://www.xxx.com:123/docxservices/XyzWebService?xsd=1" />
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://webservice.docx.abc.com/" schemaLocation="https://www.xxx.com:123/docxservices/XyzWebService?xsd=2" />
</xsd:schema>
</types>
<message name="docUpload">
<part name="parameters" element="tns:docUpload" />
</message>
<message name="docUploadResponse">
<part name="parameters" element="tns:docUploadResponse" />
</message>
<portType name="XyzWebServicePortType">
<operation name="docUpload">
<input message="tns:docUpload" />
<output message="tns:docUploadResponse" />
</operation>
</portType>
<binding name="XyzWebServicePortTypePortBinding" type="tns:XyzWebServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<operation name="docUpload">
<soap:operation soapAction="" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="XyzWebService">
<port name="XyzWebServicePortTypePort" binding="tns:XyzWebServicePortTypePortBinding">
<soap:address location="https://www.xxx.com:123/docxservices/XyzWebService" />
</port>
</service>
</definitions>

第一个 XSD:

<?xml version="1.0" encoding="UTF-8"?>
<!--Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.3-07/10/2008 08:41 PM(bt).-->
<xs:schema version="1.0" targetNamespace="http://webservice.docx.abc.com/message" xmlns:xns="http://webservice.docx.abc.com/message" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="DocumentUserDetailsRequest">
<xs:sequence>
  <xs:element name="password" type="xs:string" minOccurs="0"/>
  <xs:element name="userID" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DocumentResponseStatus">
<xs:sequence>
  <xs:element name="errorDetailsMap">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="key" minOccurs="0" type="xs:string"/>
              <xs:element name="value" minOccurs="0" type="xs:string"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="success" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DocumentUploadRequest">
<xs:complexContent>
  <xs:extension base="xns:DocumentUserDetailsRequest">
    <xs:sequence>
      <xs:element name="docName" type="xs:string" minOccurs="0"/>
      <xs:element name="folderName" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="DocumentUploadResponse">
<xs:complexContent>
  <xs:extension base="xns:DocumentResponseStatus">
    <xs:sequence>
      <xs:element name="docNumber" type="xs:string" minOccurs="0"/>
      <xs:element name="docName" type="xs:string" minOccurs="0"/>
      <xs:element name="Date" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>

第二个 XSD:

<?xml version="1.0" encoding="UTF-8"?>
<!--Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.3-07/10/2008 08:41 PM(bt).-->
<xs:schema version="1.0" targetNamespace="http://webservice.docx.abc.com/" xmlns:xns="http://webservice.docx.abc.com/" xmlns:ns1="http://webservice.docx.abc.com/message" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://webservice.docx.abc.com/message" schemaLocation="XyzWebService.xsd"/>
<xs:element name="docUpload" type="xns:docUpload"/>
<xs:element name="docUploadResponse" type="xns:docUploadResponse"/>
<xs:complexType name="docUpload">
<xs:sequence>
  <xs:element name="arg0" type="ns1:DocumentUploadRequest" minOccurs="0"/>
  <xs:element name="arg1" type="xs:base64Binary" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="docUploadResponse">
<xs:sequence>
  <xs:element name="return" type="ns1:DocumentUploadResponse" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

【问题讨论】:

  • 您能否提供一个指向您的 WSDL 的 URL?
  • 嗨兰迪,感谢您的回复。我已经附上了上面的 WSDL 部分,很抱歉由于合规问题无法给你 url 链接

标签: apigee


【解决方案1】:

这不是答案 - 我只是在这里发布,以便您阅读。

您的原始导入在我看来很好,应该得到支持。

我获取了您的文件,并为他们提供了有效的导入引用(它们仍在引用和外部服务器),并且在我尝试时一切正常,因此我将需要您的原始托管 WSDL、XSD 来更好地诊断问题。这可能吗?

文件内容:

WSDL

<?xml version='1.0' encoding='UTF-8'?>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://webservice.docx.abc.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://webservice.docx.abc.com/" name="XyzWebService">
<types>  
<xsd:schema>
<xsd:import namespace="http://webservice.docx.abc.com/message" schemaLocation="XyzWebService1.xsd" />
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://webservice.docx.abc.com/" schemaLocation="XyzWebService2.xsd" />
</xsd:schema>
</types>
<message name="docUpload">
<part name="parameters" element="tns:docUpload" />
</message>
<message name="docUploadResponse">
<part name="parameters" element="tns:docUploadResponse" />
</message>
<portType name="XyzWebServicePortType">
<operation name="docUpload">
<input message="tns:docUpload" />
<output message="tns:docUploadResponse" />
</operation>
</portType>
<binding name="XyzWebServicePortTypePortBinding" type="tns:XyzWebServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<operation name="docUpload">
<soap:operation soapAction="" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="XyzWebService">
<port name="XyzWebServicePortTypePort" binding="tns:XyzWebServicePortTypePortBinding">
<soap:address location="https://www.xxx.com:123/docxservices/XyzWebService" />
</port>
</service>
</definitions>

XyzWebService1.xsd

    <?xml version="1.0" encoding="UTF-8"?>
    <!--Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.3-07/10/2008 08:41 PM(bt).-->
    <xs:schema version="1.0" targetNamespace="http://webservice.docx.abc.com/message" xmlns:xns="http://webservice.docx.abc.com/message" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="DocumentUserDetailsRequest">
    <xs:sequence>
      <xs:element name="password" type="xs:string" minOccurs="0"/>
      <xs:element name="userID" type="xs:string" minOccurs="0"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DocumentResponseStatus">
    <xs:sequence>
      <xs:element name="errorDetailsMap">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="key" minOccurs="0" type="xs:string"/>
                  <xs:element name="value" minOccurs="0" type="xs:string"/>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="success" type="xs:boolean"/>
    </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DocumentUploadRequest">
    <xs:complexContent>
      <xs:extension base="xns:DocumentUserDetailsRequest">
        <xs:sequence>
          <xs:element name="docName" type="xs:string" minOccurs="0"/>
          <xs:element name="folderName" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="DocumentUploadResponse">
    <xs:complexContent>
      <xs:extension base="xns:DocumentResponseStatus">
        <xs:sequence>
          <xs:element name="docNumber" type="xs:string" minOccurs="0"/>
          <xs:element name="docName" type="xs:string" minOccurs="0"/>
          <xs:element name="Date" type="xs:string" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
    </xs:complexType>
    </xs:schema>

XyzWebService2.xsd

<?xml version="1.0" encoding="UTF-8"?>
<!--Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Oracle JAX-WS 2.1.3-07/10/2008 08:41 PM(bt).-->
<xs:schema version="1.0" targetNamespace="http://webservice.docx.abc.com/" xmlns:xns="http://webservice.docx.abc.com/" xmlns:ns1="http://webservice.docx.abc.com/message" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="http://webservice.docx.abc.com/message" schemaLocation="XyzWebService.xsd"/>
<xs:element name="docUpload" type="xns:docUpload"/>
<xs:element name="docUploadResponse" type="xns:docUploadResponse"/>
<xs:complexType name="docUpload">
<xs:sequence>
  <xs:element name="arg0" type="ns1:DocumentUploadRequest" minOccurs="0"/>
  <xs:element name="arg1" type="xs:base64Binary" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="docUploadResponse">
<xs:sequence>
  <xs:element name="return" type="ns1:DocumentUploadResponse" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

【讨论】:

  • 以下是网址链接,该服务已正式对外开放。 tradexchange.gov.sg/docxservices/DocxWebService?wsdl如果你仔细看。导入 WSDL 时,并非所有参数都填充到 REST API 参数中。例如缺少用户 ID 和密码参数。我遇到的另一个问题 'peer not authenticated' 。这可能是由于“自签名”证书,因为我正在从测试环境执行服务(但对于 prod 模式没有发生,如上面给定的链接)。我可以知道 Apigee 是否会在我的机器中使用 Java 信任库来验证证书吗?
【解决方案2】:

虽然您的域已被编辑,但我注意到您的资源上有一个端口号:123:

https://www.xxx.com:123/docxservices/XyzWebService?xsd=1

假设所有资源都需要被 Amazon AWS 服务器访问,并且奇怪的端口可能被阻塞。因此,如果您的 https 资源不在 443 上,那么 Apigee 系统连接到它可能会出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多