|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:CentOS完全遵守上游供应商的再发行政策,并且以百分之百的软件兼容性为目标。
在xmlrpclib中,必要传送二进制的数据,因而利用了BinaryObjects来打包,写了以下两个函数:
defencodebindata(data):
out=StringIO.StringIO()
bin=xmlrpclib.Binary()
bin.data=data
bin.encode(out)
data2=out.getvalue()
returndata2
defdecodebindata(data):
bin=xmlrpclib.Binary()
data1=bin.decode(data)
returnbin.data
在挪用decodebindata函数解码的时分,总是堕落,提醒”binascii.Error:incorrectpadding”之类的。看了一下xmlrpclib.py内里的Binary类界说:
defdecode(self,data):
self.data=base64.decodestring(data)
defencode(self,out):
out.write(”<value><base64>n”)
base64.encode(StringIO.StringIO(self.data),out)
out.write(”</base64></value>n”)
Binary的编解码实在用到的是base64的decodestring和encode,感到不太婚配,base64中,encode应当和decode配对,decodestring和encodestring配对。因而实验了一下间接利用base64来打包,不利用xmlrpclib的BinaryObjects。从头界说两个函数以下:
defencodebindata(data):
out=StringIO.StringIO()
bin=StringIO.StringIO(data)
base64.encode(bin,out)
data2=out.getvalue()
returndata2
defdecodebindata(data):
out=StringIO.StringIO()
bin=StringIO.StringIO(data)
base64.decode(bin,out)
data2=out.getvalue()
returndata2
经由测试,没有任何成绩了
xmlrpclib的BinaryObjects打包以后就是xml情势的数据了,能够间接传送了。不克不及打包以后当即解包。
from:http://blog.robotercoding.com/?cat=5&paged=2
小知识:社区支持的免费Linux发行版一般不会从商业支持中寻求什么好处,但对CentOS来说,这种情况即将改变。 |
|