带有发布数据的 httplistener

Posted

技术标签:

【中文标题】带有发布数据的 httplistener【英文标题】:httplistener with post data 【发布时间】:2012-01-28 02:24:33 【问题描述】:

我正在考虑创建一个小型 Windows 服务,该服务将通过 JSON 与客户端进行通信。我创建了一个简单的 HttpListener 示例,并且工作正常。

我的问题是如何从客户端(POST)检索 JSON 数据?

谢谢

【问题讨论】:

【参考方案1】:

当您接受来自HttpListener 的请求时,您会收到一个HttpListenerContext。从那里,你可以得到一个HttpListenerRequest - 它有一个InputStream 属性,你可以从中读取数据。

要读取文本数据(例如 JSON),您可以使用 ContentEncoding 属性并构建 StreamReader。例如:

var context = listener.GetContext();
var request = context.Request;
string text;
using (var reader = new StreamReader(request.InputStream,
                                     request.ContentEncoding))

    text = reader.ReadToEnd();

// Use text here

【讨论】:

这很有趣,但 request.InputStream 有时可能是 System.IO.Stream.Null,即使我明确发送数据也是如此。另外,我如何读取不同的文件?它们是否融合到单个 InputStream 中? @IvanP.:在这种情况下,我希望生成 text 和空字符串,因为请求正文中不包含任何数据。如果流是Stream.Null,我怀疑您没有实际上正确发送数据。我看到您现在在评论中添加了更多信息,包括另外两个问题 - 这些问题确实应该在新帖子中,因为它们与这个原始问题无关。 感谢您的回复,但我正在尝试扩展您的答案以处理通过post发送的二进制数据 @IvanP.:听起来你需要问一个新问题。

以上是关于带有发布数据的 httplistener的主要内容,如果未能解决你的问题,请参考以下文章

如何发布带有数据库的程序?

axios 为带有表单数据的发布请求返回 404

带有参数数据的 Python 请求发布

带有 Fancybox 中的提交表单的 iframe 未发布数据

带有 json 数据的 axios 发布请求

如何发布带有数据库 (.mdf) 的 3 层 WinForms 应用程序?