更改WSDL以向现有SOAP API调用添加参数

问题描述 投票:0回答:1

我正在使用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个回答
0
投票

这不是真正的答案,点点滴滴的评论太长了...

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文件具有“企业”和“合作伙伴”两种风格。Enterprise表示所有表和列均已列出-但您想看到需要生成新的WSDL并再次在应用程序中使用它的新字段。“合作伙伴”仅包含这些通用调用,因此在运行时您可以检查其中有哪些表,哪些字段,类型...非常适合编写可以连接到世界上任何SF的通用备份解决方案或应用程序。 '将仍然包含这些通用调用,您可以根据需要使用它们)

[如果您要调用公开为Web服务的自定义Apex类,那么-SF人员需要修改该代码,以便您在响应中看到更多字段。您可以做很多事情。如果您确定REST路由对您来说简单得多,那么自定义SF代码必须稍微有所不同,他们必须阅读this

是的。一些随机的信息。您需要做一些阅读和决定。只要确保您不会将自己编码到一个角落即可。

© www.soinside.com 2019 - 2024. All rights reserved.