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# - 如何模拟 System.DirectoryServices.SearchResult?

javascript - 多次调用 api 时,AJAX 请求有时会被取消

c# - 带有泛型的 NUnit 3

c# - 对于非漫游用户,我应该在哪里存储机器范围的应用程序设置?

c# - 实现(不处理)CollectionChanged 事件

http - 应用程序如何在不与浏览器冲突的情况下使用端口 80/HTTP?

node.js - Node 'request' 模块 : Getting hold of the last response in a 302-redirect

c# - 数组必须包含 1 个元素

c# - 如何在 C# 窗体上显示实时视频源?

.net - System.Uri 查询字符串中的文字与符号