2014-04-16 2 views
2

최근에 Microsoft Dynamics GP 10 웹 서비스 용 Python 3.3에서 SOAP 클라이언트를 개발하는 임무를 맡았습니다. 하루 정도면 wsdl 슬라이싱과 다이 싱 후에 마침내 suds-jurko를 사용하여 클라이언트를 만들 수있었습니다. wsdl에 정의 된 객체 (유형)를 만들고 상호 작용할 수 있습니다. 그러나 서비스 요청을하려고 할 때 필연적으로 400 개의 잘못된 요청 오류가 발생합니다. 연구 반나절 후, 나는 이것이 Dynamics GP 10 웹 서비스 (basicHttpBinding을 잘 사용하는 레거시 wsdl)에 사용되는 wsHttpBinding과 관련이 있다고 의심합니다.Python 3 SOAP 클라이언트에서 동적 GP for suds-jurko 사용

우선, suds-jurko가 wsHttpBinding을 지원하는지 여부를 확인할 수 있습니까? 나는 그렇지 않다고 생각하지만 올바른 방향으로 향하고 있는지 여부를 알기 위해 어느 방향 으로든 다른 방향 으로든 확인을 원합니다.

둘째, suds-jurko가 wsHttpBinding을 지원하지 않는다고 가정 할 때 suds-jurko에 wsHttpBinding에 대한 지원을 추가하려면 어떻게해야합니까? basicHttpBinding과 wsHttpBinding 간의 기본적인 차이점을 이해하고 있지만 SOAP 클라이언트가이 두 바인딩 시나리오에서 다르게 수행해야하는 것에 대한 구체적인 리소스를 찾는 데 어려움을 겪고 있습니다 (온라인에서 찾은 리소스의 대다수는 나에게 쓸모가없는 wsHttpBinding을 사용하도록 .NET 웹 서비스를 구성하는 방법).

이것은 현재 클라이언트가 보내는 요청입니다. 이 요청은 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> 

는 (I 중복 헤더를 발견하고는 400 잘못된 요청 오류 함께 할 수있는 뭔가가있을 경우 궁금. 나는 비눗물-jurko이 urllib.request 사용하여 사용하는 거의 동일한 코드를 시도했지만 여전히 함께 종료 400 : 잘못된 헤더가없는 잘못된 요청 오류)

모든 제안 및 조언을 주시면 감사하겠습니다. 나에게 더 많은 정보를 원한다면, 내가 할 수있는 것을 제공하는 것보다 더 행복 할 것이다. 미리 감사드립니다.

답변

4

많은 연구, 실험 및 테스트를 거친 후에 대부분의 질문에 대한 답변을 찾을 수있었습니다. 바라건대, 누군가 내가 배운 것을 통해 이익을 얻을 수 있습니다. 우리는 레거시 엔드 포인트로 끝났습니다.

제 첫 질문에 대한 대답으로 suds-jurko는 wsHTTPBinding을 지원하지 않습니다. .NET 세계 외부에 어떤 것이 있는지 잘 모르겠습니다.

suds-jurko에 대한 wsHTTPBinding 지원을 추가하는 것은 상당한 작업입니다. 기본 wsHTTPBinding 사양 herehere에 대한 정보를 찾을 수 있어야합니다.