Я ищу, чтобы скопировать некоторый код PHP, который я использую в Python.
Таким образом, код PHP генерирует следующий запрос SOAP
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:ns1="http://ws.apache.org/axis2">
<SOAP-ENV:Body>
<ns1:getKey>
<ns1:user>USERNAME</ns1:user>
<ns1:password>PASSWORD</ns1:password>
</ns1:getKey>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Это работает хорошо, однако, при попытке повторить это в Python с использованием Zeeps с помощью следующего кода, я получаю запрос, показанный ниже, с ошибкой!
от клиента импорта zeep
из lxml import etree
class RemoveWSA():
def egress(self, envelope, http_headers, operation, binding_options):
envelope.find('{http://schemas.xmlsoap.org/soap/envelope/}Header').clear()
def ingress(self, envelope, http_headers, operation):
start = 1
#client = Client('http://www.maxbounty.com/api.cfc?wsdl', plugins=[RemoveWSA()])
client = Client('http://www.maxbounty.com/api.cfc?wsdl')
params = {"user":"USERNAME","password":"PASSWORD"}
#node = client.create_message(client.service, 'getKey', **params)
#print(etree.tostring(node, pretty_print=True))
result = client.service.getKey(**params)
#print(result)
Результаты в:
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:Action>urn:getKey</wsa:Action>
<wsa:MessageID>urn:uuid:bd8376a3-adf6-4ae6-983c-2ebf83f2e934</wsa:MessageID>
<wsa:To>http://www.maxbounty.com:80/api.cfc</wsa:To>
</soap-env:Header>
<soap-env:Body>
<ns0:getKey xmlns:ns0="http://ws.apache.org/axis2">
<ns0:user>USERNAME</ns0:user>
<ns0:password>PASSWORD</ns0:password>
</ns0:getKey>
</soap-env:Body>
</soap-env:Envelope>
Использование функции RemoveWSA создает следующее (не уверен, что делает функция входа)
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"/>
<soap-env:Body>
<ns0:getKey xmlns:ns0="http://ws.apache.org/axis2">
<ns0:user>USERNAME</ns0:user>
<ns0:password>PASSWORD</ns0:password>
</ns0:getKey>
</soap-env:Body>
</soap-env:Envelope>
Как я могу повторить запрос PHP и успешно вернуться к тому, что я получил от него в Python!
Еще примеры кода, дайте мне знать!
ура
Задача ещё не решена.
Других решений пока нет …