【问题标题】:Changing a WSDL to add parameters to existing SOAP API call更改 WSDL 以将参数添加到现有 SOAP API 调用
【发布时间】:2020-01-07 14:21:27
【问题描述】:

我正在开发一个使用 zeep 和 wsdl 调用 SOAP api 的应用程序。 wsdl 有一个函数可以从 salesforce 中提取约 15 个字段,这些字段稍后会写入 csv 文件(通过 python)。我需要在这个请求中添加一些字段。

有什么方法可以检查 api 中的所有可用字段吗?相关的复杂类型如下所示:

 <xsd:complexType name="All_Fields">
  <xsd:sequence>
   <xsd:element name="FIELD_1" minOccurs="0" type="xsd:string" nillable="true"/>
   <xsd:element name="FIELD_2" minOccurs="0" type="xsd:string" nillable="true"/>
   <xsd:element name="FIELD_3" minOccurs="0" type="xsd:string" nillable="true"/>
   ...     

输出 csv 有这 3 个字段。如果我将此行添加到 Field_3 下的 wsdl,我会在我的 csv 中获得一个名为 Field_4 的新列,但它是一个空列

<xsd:element name="FIELD_4" minOccurs="0" type="xsd:string" nillable="true"/>

到目前为止,我不知道必填字段的确切名称。我需要知道这些,还是有办法获取 api 响应中返回的所有字段的列表?目前,我被告知 Salesforce 中存在新字段(但我在 WSDL 中看不到它们)

如果我完全走错了路,请告知这是否可以从我的角度完成 - 更改 python/xml 文件,或者是否需要更改 salesforce api。

我在文件顶部有一个 targetNamespace,最后有一个 soap:address

targetNamespace="http://soap.sforce.com/schemas/class/MY_API_NAME" 
soap:address location="https://MYPROJECT.my.salesforce.com/services/Soap/class/MY_API_NAME"

这些链接是否可用于查找正在返回的数据?同样,这些链接是否可用于查看所有可用参数等?

【问题讨论】:

    标签: python api soap wsdl salesforce


    【解决方案1】:

    这不是一个真正的答案,点点滴滴太长了,无法发表评论......

    Salesforce 管理员可以给您一个带有新字段的新 WSDL 文档。您可以自己编辑它,但它是有效的,对他们来说,只需点击几下即可生成新的。您需要字段名称,true - 但也需要输入 ;)

    还有第二层,SF API 在“需要知道”的基础上工作。您可能获得了连接到 SF 的用户名和密码。该用户的“个人资料”必须允许您查看/编辑数据库表和列,否则即使您猜对了字段名称也会出错。

    我不知道你到底在做什么。您是在调用标准 salesforce API(自己进行查询)还是他们向您公开了自定义 Web 服务(您提到该 WSDL 文件中有一个类?)。

    如果您正在调用标准 API(原始查询、创建、删除等调用),那么绝对有“describe”调用可以为您提供可以查看哪些表和列的信息。它们应该列在该 WSDL 中,或者您的 Python 库可能已经实现了它们,这将为您节省一些 XML 制作。我对zeep一无所知,抱歉。我听说https://pypi.org/project/simple-salesforce/ 有据可查且易于使用,内置了描述调用,但它使用 REST API,而不是 SOAP...

    (Salesforce WSDL 文件有“企业”和“合作伙伴”两种风格。企业意味着所有表和列都已列出 - 但您想查看需要生成新 WSDL 并再次在应用程序中使用的新字段。“合作伙伴" 仅包含这些通用调用,因此在运行时您可以检查那里有哪些表、哪些字段、类型......非常适合编写可以连接到世界上任何 SF 的通用备份解决方案或应用程序。听起来你有一个企业 WSDL - 但是它仍然包含这些通用调用,如果需要,您可以使用它们)

    如果您正在调用作为 Web 服务公开的自定义 Apex 类,那么很好 - SF 人员需要修改该代码,以便您在响应中查看更多字段。你能做的不多。如果您认为 REST 路由对您来说更简单,那么自定义 SF 代码的公开方式必须略有不同,他们必须阅读this

    是的。一些随机的信息。你有一些阅读和决定要做。只要确保你没有把自己编码到角落里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-08
      • 2011-08-09
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多