我正在尝试将sourceFile值发送到Web api。但是在API中,我收到的是null
var formVars = new Dictionary<string, string>();
formVars.Add("sourceFile", "Helloo");
HttpContent content = new FormUrlEncodedContent(formVars);
var result = client.PostAsync("ImageApi/Compare", content).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;
return Content(resultContent);
API代码
[HttpPost()]
public ActionResult Compare(string sourceFile)
{
return Ok(sourceFile);
}
我正在使用DotNet core 2.0
答案 0 :(得分:0)
您需要等待结果,请勿尝试自行访问.Result。到那时电话还没有结束。
您需要使用以下内容:
HttpContent content = new FormUrlEncodedContent(formVars);
var result = await client.PostAsync("ImageApi/Compare", content);
result .EnsureSuccessStatusCode();
string responseBody = await result.Content.ReadAsStringAsync();
这是基于您的代码的,尚未经过测试,但应该为您设置正确的路径以使其正常工作。永远不要尝试通过访问.Result做异步操作。
还有一件事,您还需要使用模型。
创建一个模型类,其中包含您在字典中添加的所有属性。
在您的情况下,它将类似于:
public class MyModel{
public string sourceFile { get ;set; }
}
您的控制器将变为:
[HttpPost()]
public ActionResult Compare([FromBody]MyModel model)
{
return Ok(model.sourceFile);
}