- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我刚刚开始在多平台项目的核心库中使用 Mvvmcross
。
我想将 Mvvmcross.Network
插件与 Mvvmcross.Json
插件一起使用,但我找不到结合这两个插件的好例子。我已经观看了所有 N+1 个视频,我猜这在上传视频时并未实现。
理想情况下,我想知道如何使用 json 请求和 json 响应发出异步请求。
提前致谢
最佳答案
似乎在所有版本的 Mvvmcross(Mvx) 4.1.4 和当前最新的稳定版 4.2.2 中都有一个回归错误。 readme中描述的回调方法接口(interface) IMvxJsonRestClient
和 IMvxRestClient
中缺少。该问题已在当前 master branch 中得到解决(提交:a5561b 和 fb2feb7),因此很可能会在下一个版本中修复。
如果您想使用 MvvmCross.Plugins.Json
反序列化您的 JSON 响应,那么请使用 MvxJsonRestClient
而不是标准 MvxRestClient
。
这是使用 JSONPlaceholder 的 MvxJsonRestClient
示例应用程序接口(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/
我刚刚开始在多平台项目的核心库中使用 Mvvmcross。 我想将 Mvvmcross.Network 插件与 Mvvmcross.Json 插件一起使用,但我找不到结合这两个插件的好例子。我已经观看
我是一名优秀的程序员,十分优秀!