10

Xamarin アプリで Refit ライブラリを使用しています。リクエストのタイムアウトを 10 秒に設定したいと考えています。改造でこれを行う方法はありますか?

インターフェース:

interface IDevice
{
  [Get("/app/device/{id}")]
  Task<Device> GetDevice(string id, [Header("Authorization")] string authorization);
}

API の呼び出し

var device = RestService.For<IDevice>("http://localhost");              
var dev = await device.GetDevice("15e2a691-06df-4741-b26e-87e1eecc6bd7", "Bearer OAUTH_TOKEN");
4

3 に答える 3

17

Refitでリクエストのタイムアウトを設定する方法をついに見つけました。使用しCancelationTokenました。追加後に変更されたコードは次のとおりですCancelationToken

インターフェース:

interface IDevice
{
  [Get("/app/device/{id}")]
  Task<Device> GetDevice(string id, [Header("Authorization")] string authorization, CancellationToken cancellationToken);
}

API の呼び出し:

var device = RestService.For<IDevice>("http://localhost");    
CancellationTokenSource tokenSource = new CancellationTokenSource();
tokenSource.CancelAfter(10000); // 10000 ms
CancellationToken token = tokenSource.Token;          
var dev = await device.GetDevice("15e2a691-06df-4741-b26e-87e1eecc6bd7", "Bearer OAUTH_TOKEN", token);

それは私にとって適切に機能します。正しい方法かどうかはわかりません。それが間違っている場合は、親切に正しい方法を提案してください。

于 2017-04-10T10:03:04.063 に答える