【发布时间】:2023-03-18 07:52:01
【问题描述】:
我正在尝试使用 Xamarin 实现 Refit,如果我之前在应用程序打开时未连接到 wifi,由于某种原因,它会引发 UnknownHostException (UHExc)。但这种情况并非始终如一。
我有两个调用 Refit 对我的“Refit-interface”的实例化:PostLoginAsync 和 GetDataAsync,如下所示(我一直遵循的指南是 @ 987654322@):
public async Task<SomeClass> PostLogin(string user, string password)
{
SomeClass response = null;
var loginTask = apiService.UserInitiated.PostLoginAsync(new RequestBody(user: user, password: password));
response = await FireWebTask(loginTask);
return response;
}
和
private async Task<List<Data>> GetRemoteDataAsync(string args)
{
List<Data> list = null;
var getDataTask = apiService.UserInitiated.GetDataAsync(args);
list = await FireWebTask(getDataTask);
return list;
}
“改装界面”看起来有点像这样:
...
[Post("/relative/url/to/login")]
Task<SomeClass> PostLoginAsync([Body(BodySerializationMethod.Json)] RequestBody requestBody);
[Get("/relative/url/to/data")]
Task<List<Data>> GetDataAsync([Header("SomeHeader")] string args);
...
当我在未连接到 Internet 的情况下打开应用程序并尝试发送 PostLogin 请求时,我得到了预期的 UHExc。如果我然后打开 wifi 并再次尝试(不关闭应用程序),我会再次获得 UHExc,只是这次几乎没有延迟,就像第一次一样(好像缓存了异常??)。重新启动应用程序并在不断开 wifi 的情况下重试即可正常工作。
如果我对第二个请求 (GetData) 执行完全相同的操作,我首先会得到一个 UHExc(显然),但是在重新连接 wifi 时它可以正常工作。所以在我看来,POST请求缓存了异常或其他东西,并反复抛出它而不尝试连接。我该如何解决这个问题(无论实际是什么问题)?
【问题讨论】:
-
您是否曾经解决过这个问题,因为我遇到了 Refit 似乎缓存异常的类似问题?
标签: c# android xamarin httpclient refit