Как перевести что-то, что работает в SOAPUI на Python? - PullRequest
0 голосов
/ 31 августа 2018

Я могу выполнить запрос SOAP через интерфейс SOAP. Однако, когда я делаю то же самое с Python, он терпит неудачу. Что нужно сделать для успешного перевода запросов SOAP UI в код Python.

import requests
from OpenSSL import crypto
filename = "C:\\Folder\\Cert.P12"
Pasword = "PW"
url='url.wsdl'
class Pkcs12Context(requests.packages.urllib3.contrib.pyopenssl.OpenSSL.SSL.Context):
    def __init__(self, method):
        super().__init__(method)
        p12 = crypto.load_pkcs12(open(filename, 'rb').read(), Pasword)
        self.use_certificate(p12.get_certificate())
        self.use_privatekey(p12.get_privatekey())

# Monkey-patch the subclass into OpenSSL.SSL so it is used in place of the stock version
requests.packages.urllib3.contrib.pyopenssl.OpenSSL.SSL.Context = Pkcs12Context

endPoint = 'endpointurl'
body = u"""
        XML Request
        """
encoded_request = body.encode('utf-8')
headers = {
        "Content-Type": "application/wsdl+xml;charset=UTF-8",
        "Content-Length": str(len(body))
        }

with requests.Session() as s:
    r =s.get(url)
    print(r.headers)
    r=s.post(endPoint,data=encoded_request,headers=headers,verify=True)
    print(r.headers)
    print(r.text)

Когда я выполняю в Python, это выдает ошибку, HTTP-заголовок отсутствует в поле «SOAPAction».

...