0

我有一个使用 Flurl 的 Xamarin 应用程序,下面是 Web Api 的帖子

Xamarin 应用程序:

    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 };
        }
    }

网络接口:

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 " http://192.168.0.12:60257/api/loginapi/Login ".PostJsonAsync(new { username = "fsdafsd", password = "gdfgdsf" }).ReceiveJson();

4

1 回答 1

0

解决它。无论出于何种原因,这是我试图返回的类型。将对象变量类型更改为“动态”解决了这个问题,并允许我正确反序列化对象。

动态结果 = await " http://192.168.0.12:60257/api/loginapi/Login ".PostJsonAsync(new { username = "fsdafsd", password = "gdfgdsf" }).ReceiveJson();

返回具有我在正常结构中所期望的属性的动态对象。

如果有人能启发我为什么我不能这样做:

登录请求结果 = ...

将不胜感激。

于 2016-11-09T13:45:50.717 回答