如何在C#中的post方法中读取正文数据?

时间:2018-08-06 13:00:01

标签: c# asp.net-web-api

这是我的方法:

        [HttpPost]
        public HttpResponseMessage LoginMethod()
        {
            HttpRequestMessage re = Request;
            var payLoadJson = re.Content;

            string jsonContent = payLoadJson.ReadAsStringAsync().Result;            
            var test = JObject.Parse(jsonContent);
            string userid = JObject.Parse(jsonContent)["MyFirstValue"].ToString();
            var password = JObject.Parse(jsonContent)["MySecondValue"].ToString();
          //Rest of operation
        }

我在这里传递了两个参数,想获取它们。 在jsonContent中,我正在获取如下数据:

         ------WebKitFormBoundarybBb6ip2FLSEzMmDq
 Content-Disposition: form-data; name="MyFirstValue"

 ABC
 ------WebKitFormBoundarybBb6ip2FLSEzMmDq
 Content-Disposition: form-data; name="MySecondValue"

 XYZ
 ------WebKitFormBoundarybBb6ip4iLSEzMmDq-- 

由于我将jsonContent解析为JObject的行上出现错误,因为输入字符串的格式不正确。 我也尝试过HttpContext.Current.Request["MyFirstValue"].ToString()),但在那里却获得了null的价值。

请向我建议我做错了什么。谢谢。

1 个答案:

答案 0 :(得分:2)

您在这里错误:

HttpRequestMessage re = Request;
var payLoadJson = re.Content;

您尝试将请求内容分配给payLoadJson,但没有初始化请求。内容属性。

您需要使用这样的编码内容来初始化request.Content属性,例如:

requestMessage.Content = new ByteArrayContent(content);

修改您的方法以接受参数并将其分配给您的Content。摘要如下:

    [HttpPost]
    public HttpResponseMessage LoginMethod(Dictionary<string, string> postParams = null)
    {
        HttpRequestMessage re = Request;
        re.Content = new FormUrlEncodedContent(postParams);
        var payLoadJson = re.Content;

        string jsonContent = await payLoadJson.ReadAsStringAsync().ConfigureAwait(false);            
        var test = JObject.Parse(jsonContent);
        string userid = JObject.Parse(jsonContent)["MyFirstValue"].ToString();
        var password = JObject.Parse(jsonContent)["MySecondValue"].ToString();
      //Rest of operation
    }