我刚开始在核心库中使用$ tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/bin
├── srv
├── sys
├── tmp
├── usr
└── var
处理多平台项目。
我想将Mvvmcross
插件与Mvvmcross.Network
插件一起使用,但我无法找到合并这两个插件的好例子。我观看了所有N + 1个视频,我猜这些视频在上传的时候没有实现。
理想情况下,我想知道如何使用json请求和json响应发出异步请求。
提前致谢
答案 0 :(得分:2)
似乎在Mvvmcross(Mvx)4.1.4的所有版本中存在回归错误,并且最新的稳定版本为4.2.2。接口IMvxJsonRestClient
和IMvxRestClient
中缺少readme中描述的回调方法的地方。该问题已在当前master branch(提交:a5561b和fb2feb7)中得到解决,因此很有可能会在下一个版本中修复此问题。
如果您想使用MvvmCross.Plugins.Json
反序列化您的JSON响应,请使用标准MvxJsonRestClient
上的用户MvxRestClient
。
以下是MvxJsonRestClient
使用JSONPlaceholder API的示例:
方法 - 回调
使用早于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及更高版本时,可以使用Async方法。
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; }
}