我正在我的Xamarin.Forms移动应用程序中使用ServiceStack JsonHttpClient客户端(5.9.0(。
客户端设置如下:
client = new JsonHttpClient(App.BaseEndpoint)
{
RefreshToken = RefreshToken,
};
var httpClient = client.GetHttpClient();
httpClient.Timeout = new TimeSpan(0, timeout, 0);
刷新持有者令牌效果很好,但在刷新令牌过期后,请求只是挂起,没有响应,没有任何异常。
下面是请求示例:
public async Task GetAsync(string uri)
{
try
{
var response = await client.GetAsync<string>(uri);
}
catch (RefreshTokenException ex)
{
throw new SessionExpiredException(AppResources.Error_SessionExpired);
}
}
如果我改用 JsonServiceClient - 在 RefreshToken 过期后,我按预期得到 RefreshTokenException
也许有人对此有一些修复或解决方法。谢谢
我已经重写了JsonHttpClient
手动任务延续,以在此提交中使用 async/await,这应该在 Xamarin 中使用经过更好测试的代码路径。
此更改可从最新的 ServiceStack v5.9.1 获得,该版本现已在 MyGet 上提供。
如果这仍然是一个问题,您可以尝试将JsonHttpClient
配置为使用NSUrlSessionHandler
的 iOS 和 Android 使用AndroidClientHandler
的 Xamarin 本机 HttpClient 实现。