这是我的方法:
[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
的价值。
请向我建议我做错了什么。谢谢。
答案 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
}