使用.Net,我想通过HttpWebRequest传递一些二进制数据(一些序列化对象)。
我可以将它放在请求流上,还是需要将其编码为base64字符串?
我的意思是,如果我有:
byte[] data = new byte[1000];
GetSomeStrangeData(data);
我是否需要使用Convert.ToBase64String或者我可以将它从HttpWebRequest.GetRequestStream写入流中吗?
后人:
http://tools.ietf.org/html/rfc2616
答案 0 :(得分:5)
如果您通过HttpWebRequest.GetRequestStream
将数据写入流中,您将发送纯二进制数据而不对base64进行任何转换。您必须将接收端的数据解析为二进制流。
作为旁注,在通过网络发送数据时,我也总是避开base64,因为它会增加传输数据的带宽。对于转换为base64的每3个字节,将会出现4.因此,您的所有数据都有33%的开销。
编辑:在这里为Hellfrost进一步深入探讨。 HttpWebRequest.GetRequestStream
允许您对流进行较低级别的访问,从而允许您通过连接发送二进制数据。如果您尝试将数据发送到网络服务器,我建议您查看后期数据和multipart/form-data
。您可以在此处详细了解:Upload files with HTTPWebrequest (multipart/form-data)
答案 1 :(得分:0)
Streams读写二进制文件。 GetRequestStream返回一个Stream。