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



这是我的方法:

[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值。

请告诉我哪里做错了。非常感谢。

您的错误在这里:

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

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

您需要初始化请求。编码内容的内容属性,例如:

requestMessage.Content = new ByteArrayContent(content);

修改您的方法以接受params并将其分配给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
}

最新更新