问题标签 [refit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2158 浏览

c# - 如何在运行时使用 refit 设置用户代理?

如果我的用户代理是一个常量字符串,我可以使用[Headers("User-Agent: Awesome Octocat App")]它来设置它。

但是,我的用户代理是由一种方法生成的(因为它包括设备和操作系统版本),这意味着我不能将它放在Headers属性中。

另一个提到的方法如动态标题部分中所述,它不是最佳的,因为这对我来说是一个全局标题。我宁愿不手动将此标头添加到 60 多种 API 方法中。

我该怎么做呢?它是受支持的方案吗?使用自定义 HttpClient 是一种可接受的解决方案(如果可能)。

如果您知道任何可能符合我的目的的产品,我也对其他类似产品持开放态度。

0 投票
2 回答
5930 浏览

c# - 使用 Refit 转换 url 参数

我正在使用Refit库来访问我的 API。这工作得很好,但我在我的 url 中使用枚举列表时遇到了一些问题。

IEnumerable contentTypes 当前转换为:

我想要它的格式:

我怎样才能做到这一点?

0 投票
1 回答
1874 浏览

c# - 策略句柄与 Refit 包和 Xamarin 相关的问题

我已经设置了我的 Xamarin 核心项目,其中包含我从这里阅读的许多提示。

我有一个简单的服务,用于查看输入的服务器 url 是否有效:IValidateUrlService

我正在尝试使用Polly库来执行以下操作:

这工作正常,除非我得到一个例外。例如,当我在我正在测试的一台服务器上收到 ApiException 时;上面的代码没有吸收错误!它只是抛出异常并使程序崩溃。我只能通过这样做使代码正常工作:

但这感觉不正确......如果 Handle 参数没有做任何事情,那么它有什么意义呢?我必须执行这个错误!有什么建议么?

0 投票
3 回答
14671 浏览

refit - Refit.ApiException 错误处理

如何获取 Refit.ApiException 的内容?

根据内部内容是什么,我想让用户知道如何进行。所以我看到抛出的异常有以下内容......

内容 "{\"error\":\"invalid_grant\",\"error_description\":\"用户名或密码不正确。\"}"

问题是,我如何访问它?

0 投票
0 回答
225 浏览

system.reactive - Akavache 无法在 Windows 8.1 通用应用程序中运行

我正在尝试在 Windows 通用应用程序中使用 Akavache(目前为 8.1,使用 ReactiveUI 6.5)。

为了确保它与我的架构无关,我做了一个空的解决方案,其中包含所有必要的包和要求(两个平台的 VC++),但我仍然遇到同样的问题。这对我来说是一个障碍,因为我希望我的所有查询都被缓存。

这是代码:

编辑经过一些调试,Windows Phone 8.1 Silverlight 可以工作,而不是 Jupiter。

那么缺少什么?

我正在使用 RXUI 6.5(最新)和 Windows Phone 8.1(Jupiter)(共享通用项目)

更新:Akavache.Sqlite3 导致问题。InMemoryCache 正在工作(删除 Akavache.Sqlite3 “修复”了问题),但不是 Sqlite3。此外,注册 BlobCache 的不同类型的缓存(从https://github.com/akavache/Akavache/blob/3c1431250ae94d25cf7ac9637528f4445b131317/Akavache.Sqlite3/Registrations.cs#L32复制粘贴)显然正在工作。所以我想注册类是'工作不正常,呼叫 new Akavache.Sqlite3.Registrations().Register(Locator.CurrentMutable);不工作。

编辑: 我的临时解决方案是将其复制粘贴我的应用程序中,然后在 BlobCache.ApplicationName 之后调用它。它有效,但从技术上讲,我不应该这样做。

谢谢你的帮助

0 投票
3 回答
860 浏览

c# - 我应该如何在 F# 项目中从 Refit 序列化 JSON?

我在 C# 项目中使用Refit来创建 API 客户端。我更喜欢用 F# 做所有事情,但Refit 还不完全支持 F#

如果我在 C# 中创建我的User模型,一切都很好,但我更希望能够表达哪些属性是可选的并适当地处理它们。

如果我添加FSharp.Core并使用FSharpOption<string>或类似方法,则尝试访问这些成员的断言会失败,NullReferenceException但只有当 JSON 响应包含可选内容时才会失败。

如果我创建一个包含模型的单独 F# 项目,我在尝试反序列化时User总是会得到一个。NullReferenceException

诚然,将任何模型保留为 C# 项目的一部分似乎更容易,但我不想牺牲知道哪些成员在 F# 方面是可选的。

解决此问题的最佳方法是什么?

0 投票
0 回答
418 浏览

windows-phone - Reactive Extensions、Akavache 和 Refit 对于 Windows Phone 的内部卡来说太多了

我想在我的应用程序和akavache/Akavache中使用paulcbetts/refit

问题是根据我的逻辑,Windows Phone 不喜欢我执行以下操作:

我得到学期(从缓存中,然后获取),选择想要的学期(我将 H2014 用于测试),获取所选(许多)学期的时间表(从缓存中,然后获取,如下所示:

如果我使用 5 或更多的 TimeSpan.FromSeconds,它会做我想做的事,就好像我给了 Windows Phone 喘息的时间。否则(5岁以下),我得到的例外情况如下:

抛出异常:mscorlib.ni.dll StackTrace 中的“System.NotSupportedException”:

想要的行为:

  1. 获取缓存学期 -> 获取该学期的缓存计划,获取该学期的计划
  2. 获取学期 -> 获取该学期的缓存计划,获取该学期的计划

我试过了:

  • 在没有 Refit 的情况下链接akavache/Akavache并且它可以工作。
  • 在没有akavache/Akavache的情况下链接 GetSchedule 和 GetSemesters 的选择,它可以工作。

如果你们对工作有想法或我做错了什么,请告诉我!

0 投票
1 回答
306 浏览

c# - Android - Refit 意外抛出 UnknownHostException

我正在尝试使用 Xamarin 实现Refit,如果我之前在应用程序打开时未连接到 wifi,由于某种原因,它会引发 UnknownHostException (UHExc)。但是,这并不会始终如一地发生。

我对 Refit 对我的“Refit-interface”的实例化进行了两次调用:PostLoginAsyncGetDataAsync,如下所示(我一直在关注的指南在这里):

“改装界面”看起来有点像这样:

当我在没有连接到互联网的情况下打开应用程序并尝试发送PostLogin -request 时,我得到了预期的 UHExc。如果我然后打开 wifi 并重试(不关闭应用程序),我会再次获得 UHExc,只是这次几乎没有延迟,就像第一次一样(好像异常被缓存了??)。重新启动应用程序并在不断开 wifi 的情况下重试工作正常。

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

0 投票
4 回答
408 浏览

ios - 在 Xamarin 上改装更新包

我刚刚使用 refit 包(2.3.0.-> 2.4.1)更新了 Xamarin 解决方案,现在构建抱怨:

我尝试恢复包版本,但出现同样的错误。我已经清理了解决方案,但仍然是同样的问题

0 投票
2 回答
1173 浏览

c# - 在获取请求中传递 json 参数

我有:

但 Query 实例上的 Refit 调用 ToString 而不是使用序列化程序。有没有办法在不使用包装类的情况下实现这一点?