使用 HttpListener 访问键/值对
Posted
技术标签:
【中文标题】使用 HttpListener 访问键/值对【英文标题】:Accessing Key/Value pairs using HttpListener 【发布时间】:2014-09-14 00:23:24 【问题描述】:编辑:请注意,这是一个 WinForms 应用程序,而不是网络应用程序。
我正在使用WebClient.UploadValues(Uri, "POST", NameValueCollection)
将值发送到HttpListener
的实例。在侦听器方面,当HttpListener.GetContext()
方法返回时,我可以将发送的数据作为byte []
访问。
我可以使用 EncodingXXX.GetString(buffer)
将这些数据转换为文本,它会返回以下内容:
字符串中的每个项目都由 & 符号 &
分隔。键和值都使用HttpUtility.htmlEncode/HttpUtility.HtmlDecode
进行编码,因此我可以根据与号分割数据。等号 =
符号,但是如果键或值包含它,则不会被编码。
数据中的等号是意料之中的,由于 HtmlEncode 不处理它,是否有其他标准实用程序类可以提供帮助?如果可能,我想避免手动替换字符串,因为它容易出错。
【问题讨论】:
The equal = sign, however does not get encoded if the key or value contains it
这意味着您的客户端发送了无效数据。它应该已经逃脱了。忽略请求即可。
@EZI:客户端和服务器都是我写的。这就是问题所在。如果 HtmlEncode 没有转义等号,我怎样才能正确编码它而不求助于容易出错的自定义字符串替换?
@MatthewHaugen:你链接到的另一个问题也是我自己的。使用的例子相同,但问题完全不同。
@RaheelKhan 好的,很公平。但我相信我对另一个人的回答也应该回答这个问题。
【参考方案1】:
事实证明HttpUtility.UrlEncode / HttpUtility.UrlDecode
更适合这种数据。
【讨论】:
以上是关于使用 HttpListener 访问键/值对的主要内容,如果未能解决你的问题,请参考以下文章