Lorsque vous tentez d'utiliser Zeep pour créer une requête SOAP pour la recherche de produits de NetSuite webservice (WSDL https://webservices.sandbox.netsuite.com/wsdl/v2016_1_0/netsuite.wsdl), j'utilise le code suivant:Comment supprimer les en-têtes redondants de requête SOAP en utilisant Zeep
result = client.service.search(searchRecord=item_search, _soapheaders={
'searchPreferences': search_preferences,
'applicationInfo': app_info,
'passport': passport,
})
Mais zeep génère XML de la forme:
<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>
Notez que l'en-tête généré contient des paramètres que je ne l'ai pas Posé comme tokenPassport et PartnerInfo. Le tokenPassport ajouté avec passeport conduit le noeud final Netsuite à lancer une erreur d'authentification ambiguë.
Est-ce que quelqu'un pourrait me montrer comment retirer le tokenPassport des en-têtes XML SOAP générés?
auteur de zeep ici. Cela pourrait juste être un bug dans zeep. Pourriez-vous signaler un problème et joindre un exemple de script tel que documenté à l'adresse http://docs.python-zeep.org/fr/master/reporting_bugs.html#errors-wh-creating-the-request? Merci :-) – mvantellingen