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