【问题标题】:Parse POST parameters from HttpListener从 HttpListener 解析 POST 参数
【发布时间】:2013-09-26 14:45:58
【问题描述】:

假设我有 HttpListener。它监听一些端口和ip。当我发送 POST 请求时,它会捕获它。如何解析来自 HttpListenerRequest 的 POST 参数?

HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;

if ( request.HttpMethod == "POST" )
{
  // Here i can read all parameters in string but how to parse each one i don't know                                            
}

【问题讨论】:

标签: c# http post httplistener


【解决方案1】:

几个小时前我遇到了这个问题,并提出了这个答案,希望在解析 POST 数据时对某人有所帮助

//using System.Web and Add a Reference to System.Web
Dictionary<string, string> postParams = new Dictionary<string, string>();
string[] rawParams = rawData.Split('&');
foreach (string param in rawParams)
{
    string[] kvPair = param.Split('=');
    string key = kvPair[0];
    string value = HttpUtility.UrlDecode(kvPair[1]);
    postParams.Add(key, value);
}

//Usage
Console.WriteLine("Hello " + postParams["username"]);

【讨论】:

  • 如果原始响应中有符号“&”怎么办?说{“名称”:“蛞蝓和生菜”}
  • @Bruno 迟到的回复可能对其他人有用,原始响应中的“&”应该被编码,这就是为什么使用HttpUtility.UrlDecode。 “&”应发送为“&”
  • 非常感谢。你救了我!
【解决方案2】:

POST 正文(从 HttpListenerRequest 上的 InputStream 读取)使用您选择的任何对 POST 数据进行编码的机制进行解析。

例如,您可以在浏览器中对 JavaScript 对象使用 JSON.stringify 调用来发送 JSON。在这种情况下,您可以在 .Net 或 JSON.Net 中使用 JSON 反序列化器。

或者,您可以选择完全发送 XML、CSV 或其他内容。

希望能有所帮助 - 哈罗德

【讨论】:

  • 感谢您的回答。我通过在请求中使用 json 解决了问题。
【解决方案3】:

我是Web应用程序的新手,所以我不确定我的答案是否正确,但要解析请求中的参数,您可以执行以下操作:

    HttpListenerRequest request = httpListenerContext.Request;

    string val;
    foreach (string keys in request.QueryString.AllKeys)
    val = request.QueryString[keys];

【讨论】:

    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 2013-10-23
    相关资源
    最近更新 更多