我正在尝试使用 Xamarin 实现Refit,如果我之前在应用程序打开时未连接到 wifi,由于某种原因,它会引发 UnknownHostException (UHExc)。但是,这并不会始终如一地发生。
我对 Refit 对我的“Refit-interface”的实例化进行了两次调用:PostLoginAsync和GetDataAsync,如下所示(我一直在关注的指南在这里):
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);
...
当我在没有连接到互联网的情况下打开应用程序并尝试发送PostLogin -request 时,我得到了预期的 UHExc。如果我然后打开 wifi 并重试(不关闭应用程序),我会再次获得 UHExc,只是这次几乎没有延迟,就像第一次一样(好像异常被缓存了??)。重新启动应用程序并在不断开 wifi 的情况下重试工作正常。
如果我对第二个请求( GetData )做同样的事情,我首先会得到一个 UHExc(显然),但是在重新连接 wifi 时它可以完美地工作。所以在我看来,POST请求缓存了异常或其他东西,并反复抛出它而不尝试连接。我该如何解决这个问题(无论实际问题是什么)?