c# - 通过 HttpWebRequest 传递二进制数据

标签 c# .net http networking httpwebrequest

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

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

我的意思是如果我有:

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

我需要使用 Convert.ToBase64String 还是可以将它写入来自 HttpWebRequest.GetRequestStream 的流?


为了后代:

https://www.rfc-editor.org/rfc/rfc2616

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

http://www.wireshark.org/

http://www.fiddler2.com

最佳答案

如果您通过 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/

相关文章:

c# - response.redirect 和 server.transfer 的区别

c# - LINQ:每隔一个位置添加一个项目

.net - 使用 Razor 模板在 MVC3 中发送电子邮件

c# - 使用 NancyFX 自托管的分块压缩响应

ajax - 在返回之前如何合并两个 gorountines 的结果?

c# - 我如何关闭大写锁定键

c# - 在 Dynamic LINQ 中使用 Contains 时,如何将动态类型转换为字符串?

c# - 实现自己的 ViewModelLocator

c# - Nuget 包引用的库在 Linux 和 Windows 上具有不同的名称

c# - 在 HTTP POST 中发送数组