Python为Web服务创建字节数组期望字节[]

时间:2010-07-22 14:22:34

标签: python bytearray

我正在使用基于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,...]?

2 个答案:

答案 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