我使用Flurl获得了一个Xamarin应用程序,并将以下帖子发布到Web Api
Xamarin App:
private async Task<LoginResponse> processLogin()
{
try
{
return await "http://192.168.0.12:60257/api/loginapi/Login".WithTimeout(10).PostJsonAsync(new { username = "fsdafsd", password = "gdfgdsf" }).ReceiveJson<LoginResponse>();
}
catch (Exception e)
{
return new LoginResponse { ResponseStatusCode = -1 };
}
}
Web Api:
public LoginResponse Login([FromBody]LoginRequest loginRequest)
{
var result = new LoginResponse();
try
{
var user = this.UserManager.FindAsync(loginRequest.username, loginRequest.password);
if (user != null)
{
result.ResponseStatusCode = 1;
}
else
{
result.ResponseStatusCode = 0;
}
}
catch (Exception e)
{
result.ResponseStatusCode = -1;
}
return result;
}
我可以看到我的Web Api方法被点击,它返回预期的对象类型,而不是我的Xamarin应用程序继续等待Flurl Post。
任何人都可以告诉我可能做错了吗?
更新:
我注意到以下内容确实有效,但它并不理想:
动态结果= await&#34; http://192.168.0.12:60257/api/loginapi/Login&#34; .PostJsonAsync(new {username =&#34; fsdafsd&#34;,password =&#34; gdfgdsf&#34;})。ReceiveJson ();
答案 0 :(得分:0)
修正了它。无论出于何种原因,这是我试图返回的类型。将对象变量类型更改为&#34; dynamic&#34;修复此问题,并允许我正确地反序列化对象。
动态结果= await&#34; http://192.168.0.12:60257/api/loginapi/Login&#34; .PostJsonAsync(new {username =&#34; fsdafsd&#34;,password =&#34; gdfgdsf&#34;})。ReceiveJson ();
返回一个动态对象,其中包含我在正常结构中所期望的属性。
如果有人能够启发我为什么不能这样做:
LoginRequest result = ...
感激不尽。