Уважаемые форумчане!
Просьба помочь с кодом обращения к web сервису через Soap.
Есть описание сервиса-приложено к сообщению.
использую библиотеки zeep и zeep-adv для работы с SOAP и передачи вложенного файла.
Код вызова:
from zeep import client
from zeep import ns
from zeep.wsse.username import UsernameToken
from zeep import transport_with_attach as twa
import base64
with open('out.gz','rb')as f:
bytes = f.read()
encoded_data = base64.b64encode(bytes)
print (type(encoded_data))
#filename = ‘out.gz’
CLIENT = client.Client(“C:\\attach\projectPolicyCountService.xml”,
wsse=UsernameToken('login', ‘passowrd’, use_digest=True), transport=twa.TransportWithAttach())
#data = CLIENT.attach(filename)
r = CLIENT.service.getNumberFreeRequest()
print (type(r.attachments.content))
response_attach = r.attachments.content
my_file = open('resp_rsa.gz', ‘wb’)
my_file.write(response_attach)
Если в методе web сервиса не указываю параметр где по идее должен передать приаттачменный файл, то
сервис отвечает и указывает что attachment не передан, как только указываю параметр, начинает ругаться что “TypeError: a bytes-like object is required, not ‘str’”, хотя перед передачей параметра специально смотрю тип данных и он byte. вот строка на которой все ломается r = CLIENT.service.getNumberFreeRequest(encoded_data)
Как корректно передать файл в виде attachment на сервис?