[英]What should TResult be when using public async Task to return json response from API HTTP Post
帐户服务:
public async Task<string> PostRegistrationToApi(NameValueCollection form)
try
{
string str = await url.WithHeaders(new { Accept = "application /json", User_Agent = "Flurl" }).PostJsonAsync(myDictionary).ReceiveJson();
return str;
}
这是界面中的样子:
public interface IAccountService
{
Task<string> PostRegistrationToApi(NameValueCollection form);
这是我的控制器视图:
string str = await _accountService.PostRegistrationToApi(myform);
return RedirectToAction("Register");
这是我收到的错误消息:
无法将类型'System.Dynamic.ExpandoObject'隐式转换为'string'
我不知道如何解决此错误。 有人可以告诉我此错误消息的含义以及如何解决吗? 起初,我以为是TResult类型问题,但即使将变量更改为字符串类型,也似乎与TResult一致。 我仍然遇到相同的错误。 谢谢!
您收到该错误是因为ReceiveJson
返回的是dynamic
而不是字符串。 这使您可以将结果作为具有属性的对象使用,而不必声明匹配的类。 这对于快速且肮脏的JSON响应非常方便,因为您知道响应的形状不会改变,但是您放弃了编译时类型检查,因此在大多数情况下,我建议创建匹配的类并使用RecieveJson<T>
。
如果您确实想找回字符串,则可以改用ReceiveString
。 如果您只是将响应转发到其他内容,或者将其转储到日志或其他有用的内容中。 但是,如果您需要以某种方式处理 JSON结果,我建议您使用ReceiveJson
或ReceiveJson<T>
以便您可以将结果作为C#对象使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.