簡體   English   中英

使用suds-jurko的Dynamics GP的Python 3 SOAP客戶端

[英]Python 3 SOAP client for Dynamics GP using suds-jurko

最近,我承擔了為Microsoft Dynamics GP 10 Web服務在python 3.3中開發SOAP客戶端的任務(殘酷而血腥的任務)。 經過一天左右的wsdl切片和切塊,我終於能夠使用suds-jurko創建客戶端。 我可以創建wsdl中定義的對象(類型)並與之交互。 但是,當我嘗試撥打任何服務電話時,不可避免地會收到400 Bad Request錯誤。 經過半天的研究,我懷疑這與Dynamics GP 10 Web服務使用的wsHttpBinding有關(使用基本HttpBinding的舊版wsdl很好用)。

首先,誰能為我確認suds-jurko是否支持wsHttpBinding? 我懷疑不是這樣,但我想以一種或另一種方式進行確認,以便知道我是否朝着正確的方向前進。

第二,假設suds-jurko不支持wsHttpBinding,我需要怎么做才能將對wsHttpBinding的支持添加到suds-jurko? 我了解basicHttpBinding和wsHttpBinding之間的基本區別,但是我很難找到關於這兩種綁定方案中SOAP客戶端需要做些什么的具體資源(我在網上找到的大部分資源都在談論如何配置.NET Web服務以使用wsHttpBinding,這對我沒有用)。

這是我當前的客戶發送的請求。 該請求與支持wsHttpBinding的客戶端生成的請求有什么不同(或有何不同)?

HEADERS: {'Content-Type': 'application/soap+xml; charset=utf-8', 
          'Content-type':    'application/soap+xml; charset=utf-8',
          'SOAPAction': b'"http://schemas.microsoft.com/dynamics/gp/2010/01/ICompany/GetCompanyList"',
          'Soapaction': b'"http://schemas.microsoft.com/dynamics/gp/2010/01/ICompany/GetCompanyList"'}

MESSAGE: <?xml version="1.0" encoding="UTF-8"?>
         <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
           xmlns:ns0="http://schemas.microsoft.com/dynamics/gp/2010/01"
           xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/"
           xmlns:ns2="http://schemas.datacontract.org/2004/07/Microsoft.Dynamics.GP"
           xmlns:ns3="http://schemas.datacontract.org/2004/07/Microsoft.Dynamics.Common"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
             <SOAP-ENV:Header/>
             <ns1:Body>
                 <ns0:GetCompanyList>
                     <ns0:criteria>
                         <ns3:columns/>
                         <ns3:convertToUpperCaseRestriction/>
                         <ns3:restrictions/>
                         <ns2:Id>
                             <ns3:From>-32000</ns3:From>
                             <ns3:To>32000</ns3:To>
                         </ns2:Id>
                     </ns0:criteria>
                     <ns0:context>
                         <ns3:CultureName>en-US</ns3:CultureName>
                         <ns3:CurrencyType>Transactional</ns3:CurrencyType>
                         <ns3:OrganizationKey xsi:type="ns3:CompanyKey">
                             <ns3:Id>-1</ns3:Id>
                         </ns3:OrganizationKey>
                     </ns0:context>
                 </ns0:GetCompanyList>
             </ns1:Body>
         </SOAP-ENV:Envelope>

(我注意到重復的標頭,並想知道這是否與400 Bad Request錯誤有關。我實際上使用urllib.request嘗試了suds-jurko使用的相同代碼,但最終還是出現了400:Bad Request錯誤,而沒有標頭重復)

任何建議和/或意見將不勝感激。 如果您想從我這里獲得更多信息,我將非常樂意提供我所能提供的一切。 提前致謝。

經過大量的研究,實驗和測試,我能夠找到大多數問題的答案。 希望有人可以從我學到的知識中受益。 我們最終選擇了舊式端點。

在回答我的第一個問題時,suds-jurko不支持wsHTTPBinding。 我不確定.NET世界之外是否有任何事情。

為suds-jurko添加wsHTTPBinding支持將是一項艱巨的任務。 您應該能夠在此處此處找到有關基本wsHTTPBinding規范的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM