Xamarin を使用してRefitを実装しようとしていますが、アプリが開いているときに以前に wifi に接続していなかった場合、何らかの理由で UnknownHostException (UHExc) がスローされます。ただし、これは一貫して発生しません。
以下に示すように、「Refit-interface」の Refit のインスタンス化に対して、PostLoginAsyncとGetDataAsyncの 2 つの呼び出しがあります (私が従ったガイドはこちらです)。
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;
}
「Refit-interface」は次のようになります。
...
[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が再び取得されますが、今回は初めてのようにほとんど遅延がありません(例外がキャッシュされたかのように??)。Wi-Fiを切断せずにアプリを再起動して再試行すると、正常に機能します。
2番目のリクエスト( GetData )でまったく同じことを行うと、最初にUHExcを取得します(明らかに)が、wifiを再接続すると問題なく動作します。したがって、POSTリクエストが例外などをキャッシュし、まったく接続しようとせずに繰り返しスローするように思えます。どうすればこれを解決できますか (実際の問題が何であれ)。