我正在使用基于SOAP的Web服务,该服务期望在其文档中描述的'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,...]?
答案 0 :(得分:2)
我最终弄明白了 - ByteArray(byte [])的Web服务意味着什么:
/9j/4AAQSkZJRgABAgEAYABgAAD/7gAOQWRvYmUAZAAAAAAB...
... aha,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
我找到了灵感right here - 感谢Doug Hellman
答案 1 :(得分:0)
尝试bytearray
。