使用POST数据的HttpListener

14

我想创建一个与客户端通过JSON通信的小型Windows服务。我已经创建了一个简单的HttpListener示例,并且它可以正常工作。

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

谢谢

1个回答

34

当你从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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接