gpt4 book ai didi

c# - MvxRestClient.MakeRequestAsync 与 MvxJsonRequest 的工作示例

转载 作者:太空狗 更新时间:2023-10-30 01:31:59 24 4
gpt4 key购买 nike

我刚刚开始在多平台项目的核心库中使用 Mvvmcross

我想将 Mvvmcross.Network 插件与 Mvvmcross.Json 插件一起使用,但我找不到结合这两个插件的好例子。我已经观看了所有 N+1 个视频,我猜这在上传视频时并未实现。

理想情况下,我想知道如何使用 json 请求和 json 响应发出异步请求。

提前致谢

最佳答案

似乎在所有版本的 Mvvmcross(Mvx) 4.1.4 和当前最新的稳定版 4.2.2 中都有一个回归错误。 readme中描述的回调方法接口(interface) IMvxJsonRestClientIMvxRestClient 中缺少。该问题已在当前 master branch 中得到解决(提交:a5561bfb2feb7),因此很可能会在下一个版本中修复。


如果您想使用 MvvmCross.Plugins.Json 反序列化您的 JSON 响应,那么请使用 MvxJsonRestClient 而不是标准 MvxRestClient

这是使用 JSONPlaceholderMvxJsonRestClient 示例应用程序接口(interface):

方法 - 回调

当使用早于 4.1.4 的 Mvx 版本并且很可能在 4.2.2 之后的版本中时,您可以使用回调方法。

public void PostSample()
{
var request = new MvxJsonRestRequest<UserRequest>
("http://jsonplaceholder.typicode.com/posts")
{
Body = new UserRequest
{
Title = "foo",
Body = "bar",
UserId = 1
}
};

var client = Mvx.Resolve<IMvxJsonRestClient>();
client.MakeRequestFor(request,
(MvxDecodedRestResponse<UserResponse> response) =>
{
// do something with the response.StatusCode and response.Result
},
error =>
{
// do something with the error
});
}

方法 - 异步

在使用 Mvx 4.1.4 及更高版本时,您可以使用异步方法。

public async Task PostSampleAsync()
{
var request = new MvxJsonRestRequest<UserRequest>
("http://jsonplaceholder.typicode.com/posts")
{
Body = new UserRequest
{
Title = "foo",
Body = "bar",
UserId = 1
}
};

var client = Mvx.Resolve<IMvxJsonRestClient>();
var response = await client.MakeRequestForAsync<UserResponse>(request);

// Check response.StatusCode if matches your expected status code
if (response.StatusCode == System.Net.HttpStatusCode.Created)
{
// interrogate the response object
UserResponse user = response.Result;
}
else
{
// do something in the case of error/time-out/unexpected response code
}
}

请求和响应类

public class UserRequest
{
public string Title { get; set; }
public string Body { get; set; }
public int UserId { get; set; }
}

public class UserResponse
{
public string Title { get; set; }
public string Body { get; set; }
public int UserId { get; set; }
public int Id { get; set; }
}

关于c# - MvxRestClient.MakeRequestAsync 与 MvxJsonRequest 的工作示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38784741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com