我正在尝试在 C#(.net 4)中的客户端程序上压缩一个大字符串,并使用 PUT 请求将其发送到服务器(django,python 2.7)。理想情况下,我想在两端使用标准库,所以我尝试使用 gzip。
我的 C# 代码是:
public static string Compress(string s) {
var bytes = Encoding.Unicode.GetBytes(s);
using (var msi = new MemoryStream(bytes))
using (var mso = new MemoryStream()) {
using (var gs = new GZipStream(mso, CompressionMode.Compress)) {
msi.CopyTo(gs);
}
return Convert.ToBase64String(mso.ToArray());
}
}
蟒蛇代码是:
s = base64.standard_b64decode(request)
buff = cStringIO.StringIO(s)
with gzip.GzipFile(fileobj=buff) as gz:
decompressed_data = gz.read()
它几乎可以工作,但输出是:{▯"▯c▯h▯a▯n▯g▯e▯d▯"▯} 当它应该是 {"changed"} 时,即每个其他字母都很奇怪。如果我通过 decompressed_data[::2] 取出所有其他字符,那么它可以工作,但它有点像 hack,显然还有其他问题。
我想知道我是否需要对 PUT 请求进行 base64 编码?这只需要POST吗?