При попытке использовать Zeep для создания запроса SOAP для поиска продукта из NetSuite WebService (WSDL https://webservices.sandbox.netsuite.com/wsdl/v2016_1_0/netsuite.wsdl), я использую следующий код:Как удалить лишние заголовки из запроса SOAP с помощью Zeep
result = client.service.search(searchRecord=item_search, _soapheaders={
'searchPreferences': search_preferences,
'applicationInfo': app_info,
'passport': passport,
})
Но zeep генерирует XML формы:
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<ns0:passport xmlns:ns0="urn:messages_2016_2.platform.webservices.netsuite.com">
<ns1:email xmlns:ns1="urn:core_2016_2.platform.webservices.netsuite.com">[email protected]</ns1:email>
<ns2:password xmlns:ns2="urn:core_2016_2.platform.webservices.netsuite.com">somepassword</ns2:password>
<ns3:account xmlns:ns3="urn:core_2016_2.platform.webservices.netsuite.com">12345</ns3:account>
<ns4:role xmlns:ns4="urn:core_2016_2.platform.webservices.netsuite.com" internalId="1234" type="role" />
</ns0:passport>
<ns5:tokenPassport xmlns:ns5="urn:messages_2016_2.platform.webservices.netsuite.com" />
<ns6:applicationInfo xmlns:ns6="urn:messages_2016_2.platform.webservices.netsuite.com">
<ns6:applicationId>ABCDE</ns6:applicationId>
</ns6:applicationInfo>
<ns7:partnerInfo xmlns:ns7="urn:messages_2016_2.platform.webservices.netsuite.com" />
<ns8:searchPreferences xmlns:ns8="urn:messages_2016_2.platform.webservices.netsuite.com">
<ns8:bodyFieldsOnly>false</ns8:bodyFieldsOnly>
<ns8:returnSearchColumns>true</ns8:returnSearchColumns>
<ns8:pageSize>20</ns8:pageSize>
</ns8:searchPreferences>
</soap-env:Header>
<soap-env:Body>
<ns0:search xmlns:ns0="urn:messages_2016_2.platform.webservices.netsuite.com">
<ns0:searchRecord xmlns:ns3="urn:common_2016_2.platform.webservices.netsuite.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns3:ItemSearchBasic">
<ns3:isInactive>
<ns2:searchValue xmlns:ns2="urn:core_2016_2.platform.webservices.netsuite.com">true</ns2:searchValue>
</ns3:isInactive>
</ns0:searchRecord>
</ns0:search>
</soap-env:Body>
</soap-env:Envelope>
Обратите внимание, что сгенерированный заголовок содержит параметры, которые я не ставил, как tokenPassport и partnerInfo. Добавленный tokenPassport вместе с паспортом приводит к тому, что конечная точка Netsuite вызывает ошибку неоднозначной аутентификации.
Может ли кто-нибудь любезно указать мне, как удалить tokenPassport из созданных заголовков XML SOAP?
автор zeep здесь. Это может быть просто ошибкой в zeep. Не могли бы вы сообщить о проблеме и приложить пример сценария, как описано в http://docs.python-zeep.org/en/master/reporting_bugs.html#errors-when-creating-the-request? Благодаря :-) – mvantellingen