Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用HttpListener访问键/值对_C#_.net_Webserver_Key Value_Httplistener - Fatal编程技术网

C# 使用HttpListener访问键/值对

C# 使用HttpListener访问键/值对,c#,.net,webserver,key-value,httplistener,C#,.net,Webserver,Key Value,Httplistener,编辑:请注意,这是WinForms应用程序,不是web应用程序 我正在使用WebClient.UploadValues(Uri,“POST”,NameValueCollection)将值发送到HttpListener的实例。在侦听器端,当HttpListener.GetContext()方法返回时,我可以以字节[]的形式访问发送的数据 我可以使用EncodingXXX.GetString(buffer)将此数据转换为文本,它返回以下内容: 键1=值1 键2=值2 字符串中的每个项目都由符号

编辑:请注意,这是WinForms应用程序,不是web应用程序

我正在使用
WebClient.UploadValues(Uri,“POST”,NameValueCollection)
将值发送到
HttpListener
的实例。在侦听器端,当
HttpListener.GetContext()方法返回时,我可以以
字节[]
的形式访问发送的数据

我可以使用
EncodingXXX.GetString(buffer)
将此数据转换为文本,它返回以下内容:

  • 键1=值1
  • 键2=值2
字符串中的每个项目都由符号
分隔。键和值都是使用
HttpUtility.HtmlEncode/HttpUtility.HtmlDecode
编码的,因此我可以基于符号和精细分割数据。但是,如果键或值包含等号
=
符号,则不会对其进行编码


数据中的等号是可以预期的,因为HtmlEncode不处理它,有没有其他标准实用程序类可以提供帮助?如果可能的话,我希望避免手动替换字符串,因为它容易出错。

事实证明
HttpUtility.UrlEncode/HttpUtility.UrlDecode
更适合这种数据。

等号=如果键或值包含它,则不会被编码。
这意味着客户端发送无效数据。它本应该逃走的。忽略这个请求。@EZI:客户端和服务器都是我写的。这就是问题所在。如果HtmlEncode没有转义等号,我如何正确编码它而不使用容易出错的自定义字符串替换?@MatthewHaugen:你链接到的另一个问题也是我自己的问题。使用的例子是相同的,但问题完全不同。@RaheelKhan好的,很公平。但我相信我对另一个问题的回答也应该回答这个问题。