这里是python新秀,感谢您抽出宝贵时间来提供帮助。
我正在发送SOAP请求,以使用zeep从服务器下载一些mp4录音。服务器通过发送以下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
运行此命令时出现此错误 “记录= pack.root AttributeError:'OperationProxy'对象没有属性'root'“
我试图做与此文章相同的操作,但是无法弄清楚如何下载附件
Python SOAP WSDL works in SOAPpy but not ZSI or 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(例如,request = request) requests.exceptions.ConnectionError:HTTPConnectionPool(host = '10 .224.91.216',port = 2001):url超过了最大重试次数:/ nbr / services / NBRStorageService(由NewConnectionError(':导致:无法建立新连接:[WinError 10060 ]连接尝试失败,因为连接的一方在一段时间后未正确响应,或者建立的连接失败,因为连接的主机未能响应'))“”
答案 0 :(得分:0)
您实际上不是在呼叫client.service.downloadNBRStorageFile
。要实际调用该方法,您需要:
pack = client.service.downloadNBRStorageFile()
(请注意括号的结尾。)
您当前的代码只是将client.service.downloadNBRStorageFile
对象分配给您的pack
变量,这就是为什么您的错误消息引用的是OperationProxy
类型。