приложения Python Zeep и MessagePack - PullRequest
0 голосов
/ 28 ноября 2018

Здесь новичок на Python, и спасибо, что нашли время помочь.

Я отправляю SOAP-запрос на скачивание некоторых записей mp4 с сервера, используя zeep.Сервер отвечает, отправляя следующие вложения MessagePack.Как мне распаковать это и конвертировать в mp4.Вложение из нескольких частей содержит как описание файла, так и самого файла MP4.Спасибо

<MessagePack(attachments=[<Attachment('<6X3ER09X000X401BEFX91B4FFBD48906>', 'application/octet-stream')>, <Attachment('<0XECXX28CX0RS9DD28BYYA9F2CBA177D>', 'application/octet-stream')>])>

Вот код, который я пытаюсь использовать

def get_record(client, siteid, username, passwd, ticket):
    return client.downloadNBRStorageFile(**{'siteId': 'xxxxx', 'recordId': xxxxx, 'ticket':ticket})

def main():

client = Client(wsdl=wsdl)
service = client.create_service(BINDING_NAME, ADDRESS)
resp = update_phone_by_name(service, siteid, username, password, ticket)
pack = client.service.downloadNBRStorageFile
recording = pack.root
description = pack.attachments[0].content
rec_file = pack.attachments[1].content

Когда я запускаю это, я получаю эту ошибку "recording = pack.root AttributeError: объект 'OperationProxy' не имеетатрибут 'root' "

Я пытаюсь сделать то же самое, что и в этом посте, но не могу понять, как загрузить вложения

Python SOAP WSDL работает в SOAPpy, но не в ZSI илиzeep

---- Редактировать ----- Обновить ----- Я обновил код, как показано ниже:

def get_ticket(client):
    global rec_ticket
    global ticket
    rec_ticket = client.getStorageAccessTicket(**{'siteId': siteid, 'username': username, 'password': password})
    return rec_ticket

def get_record(client):
    return client.downloadNBRStorageFile(**{'siteId': 'xxxxx', 'recordId': 

recordid, 'ticket': rec_ticket})

def main():
    client = Client(wsdl=wsdl)
    axl = client.create_service(BINDING_NAME, ADDRESS)
    resp_ticket = get_ticket(axl)
    resp_rec = get_record(axl)
    pack = client.service.downloadNBRStorageFile(siteid, recordID, rec_ticket)

    record_details = pack.root
    record_file = pack.attachments[1].content

Однако я получаю ответ ниже: "поднять ConnectionError (e, request = request) request.exceptions.ConnectionError: HTTPConnectionPool (host = '10 .224.91.216 ', port = 2001): Maxповторные попытки превышены с помощью url: / nbr / services / NBRStorageService (вызвано NewConnectionError (': не удалось установить новое соединение: [WinError 10060] Попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом через некоторое время или установило соединение)не удалось, потому что соединениехост ted не смог ответить ')) "

1 Ответ

0 голосов
/ 29 ноября 2018

Вы на самом деле не звоните client.service.downloadNBRStorageFile.Для фактического вызова метода вам понадобится:

pack = client.service.downloadNBRStorageFile()

(обратите внимание на круглые скобки в конце.)

Ваш текущий код просто присваивает объект client.service.downloadNBRStorageFile вашему packпеременная, поэтому ваше сообщение об ошибке относится к типу OperationProxy.

...