通过HttpWebRequest传递二进制数据

使用.Net,我想通过HttpWebRequest传递一些二进制数据(一些序列化对象)。

我可以将它放在请求流上,还是需要将其编码为base64字符串?

我的意思是,如果我有:

byte[] data = new byte[1000]; GetSomeStrangeData(data); 

我是否需要使用Convert.ToBase64String或者我可以将它从HttpWebRequest.GetRequestStream写入流中吗?


后人:

http://tools.ietf.org/html/rfc2616

http://msdn.microsoft.com/en-us/library/d4cek6cc.aspx

http://www.wireshark.org/

http://www.fiddler2.com

如果通过HttpWebRequest.GetRequestStream将数据写入流中,则将发送纯二进制数据而不对base64进行任何转换。 您必须将接收端的数据解析为二进制流。

作为旁注,在通过网络发送数据时,我也总是避开base64,因为它会增加传输数据的带宽。 对于每3个字节,您转换为base64将会出现4.因此,您的所有数据都有33%的开销。

编辑:在这里进一步深入了解Hellfrost。 HttpWebRequest.GetRequestStream允许您对流进行较低级别的访问,从而允许您通过连接发送二进制数据。 如果您尝试将数据发送到Web服务器,我建议您查看后期数据和multipart/form-data 。 你可以在这里阅读更多相关信息: 使用HTTPWebrequest上传文件(multipart / form-data)

Streams读写二进制文件。 GetRequestStream返回一个Stream。