2010-07-22 99 views
2

我正在使用基於SOAP的Web服務,它需要在其文檔中描述的'ByteArray'形式的圖像元素爲'byte []'類型 - 我使用的客戶端是基於Python的泡沫庫。Python創建字節數組用於Web服務期望字節[]

問題是,我不完全知道如何表示的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

我明白了到底想通 - 什麼用的ByteArray(字節[])意味着Web服務看起來是這樣的:

/9j/4AAQSkZJRgABAgEAYABgAAD/7gAOQWRvYmUAZAAAAAAB... 

......啊哈,底座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 - 感謝道格·海爾曼

+1

感謝您發佈您的解決方案,這正是我一直在尋找的 – igniteflow 2011-09-23 11:36:49