Python 为期望 Byte[] 的 web 服务创建字节数组
我正在使用一个基于SOAP的网络服务,它需要一个图像元素,这个元素的格式是'ByteArray',在他们的文档中描述为'byte[]'类型。我使用的客户端是基于Python的suds库。
问题是我不太确定如何为这个服务表示ByteArray。我想它应该像下面这样的列表:
[71,73,70,56,57,97,1,0,1,0,128,0,0,255,255,255,0,0,0,33,249,4,0,0,0,0,0,44,0,0,0,0,1,0,1,0,0,2,2,68,1,0,59]
现在,当我把这个作为请求的一部分发送时,服务却报错,提示信息是:Base64序列长度(105)不合法。必须是4的倍数。这是否意味着我需要在每个成员后面加零,使它们的长度变成4,比如说[0071,0073,0070,...]?
2 个回答
0
试试用 bytearray
这个东西。
2
最后我搞明白了,那个网络服务提到的 ByteArray (byte[]) 大概是这个意思:
/9j/4AAQSkZJRgABAgEAYABgAAD/7gAOQWRvYmUAZAAAAAAB...
... 啊哈,原来是 base 64(我得说,他们的文档里根本没有提到这一点)...
所以我通过使用这个方法让它工作了:
encoded_data = base64.b64encode(open(file_name, 'rb').read())
strg = ''
for i in xrange((len(encoded_data)/40)+1):
strg += encoded_data[i*40:(i+1)*40]
# strg then contains data required
我在这里找到了灵感 就在这里 - 感谢 Doug Hellman