Flurl Post没有从Web Api返回

时间:2016-11-09 12:29:01

标签: api web xamarin flurl

我使用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 ();

1 个答案:

答案 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 = ...

感激不尽。