Android - Refit异常抛出UnknownHostException



我试图使用Xamarin实现Refit,由于某种原因,如果我以前没有连接到wifi,而应用程序是打开的,它会抛出一个未知的hostexception (UHExc)。但这种情况并不总是发生。

我有这两个调用Refit的实例化我的"Refit接口":PostLoginAsyncGetDataAsync,如下所示(我一直遵循的指南在这里):

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请求时,我得到了一个UHExc。如果我打开wifi并再次尝试(不关闭应用程序),我再次获得UHExc,只是这一次几乎没有延迟作为第一次(如果异常被缓存??)。重新启动应用程序并在不断开wifi的情况下再次尝试。

如果我对第二个请求(GetData)做完全相同的事情,我首先得到一个UHExc(显然),但当重新连接wifi时,它可以完美地工作。所以在我看来,post请求缓存异常或其他东西,并反复抛出它,而不尝试连接。我该如何解决这个问题(无论实际问题是什么)?

我也遇到过这个问题,经过一些测试后发现这个问题与Fusillade库有关。现在,最初的问题是修复的更改没有反映在NuGet包中,因此您需要从Github repo下载最新的源代码并引用较新的dll。

看起来潜在的问题是由于失败的请求进入队列并播放,即使请求导致WebException。

我将最新的代码包含到我的项目中,并确认它们可以正常工作。

相关内容

  • 没有找到相关文章

最新更新