使用 .Net,我想通过 HttpWebRequest 传递一些二进制数据(一些序列化对象)。
我可以只把它放在请求流上,还是需要将它编码成 base64 字符串?
我的意思是如果我有:
byte[] data = new byte[1000];
GetSomeStrangeData(data);
我需要使用 Convert.ToBase64String 还是可以将它写入来自 HttpWebRequest.GetRequestStream 的流?
为了后代:
https://www.rfc-editor.org/rfc/rfc2616
最佳答案
如果您通过 HttpWebRequest.GetRequestStream
将数据写入流,您将发送纯二进制数据,无需任何转换为 base64。您必须将接收端的数据解析为二进制流。
附带说明一下,在通过网络发送数据时,我也总是会避开 base64,因为它会增加传输数据的带宽。每转换为 base64 的 3 个字节将产生 4 个字节。因此,所有数据的开销为 33%。
编辑:这里对 Hellfrost 进行更深入的探讨。 HttpWebRequest.GetRequestStream
允许您对流进行较低级别的访问,进而允许您通过连接发送二进制数据。如果您尝试将数据发送到网络服务器,我建议您查看后数据和 multipart/form-data
。您可以在这里阅读更多相关信息:Upload files with HTTPWebrequest (multipart/form-data)
关于c# - 通过 HttpWebRequest 传递二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8911362/