这是我的方法:
[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
}