问题标签 [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 投票
0 回答
442 浏览

xamarin - 使用 Refit 在 Xamarin 中请求开始失败

在短时间内发出大量网络请求后,我们的响应中不断收到“任务已取消”错误,一旦我们开始收到这些错误,在错误停止后发出的任何请求也会返回相同的错误,直到我们重新启动应用程序。我们使用 anAuthenticatedHttpClientHandler来处理请求中的身份验证令牌:

我们像这样使用它:

30 秒超时不是问题,因为我们所有的请求都在 2 秒以下,我们可以一致地重现错误。

HttpClient每次调用都使用一个实例。我们也使用 MvvmCross,而且这个问题似乎只出现在 iOS 上。我们尝试在项目设置中更改 HttpClientImplementation,并HttpClient在每次调用中使用新实例,但均未奏效。

完整的堆栈跟踪:

构建设置:

在此处输入图像描述

0 投票
1 回答
5603 浏览

c# - 使 Refit 自动在查询字符串中提供参数

我正在使用 Refit 为 Web 服务生成客户端。

我的 Web API 的所有 URL 都是这样的:

https://service.com/api/v3/datasetsapi_key=XXXXXXX

如您所见,API 密钥是在查询字符串而不是标头中指定的。

我希望 Refit 自动提供我的访问令牌作为查询字符串的一部分,而不必在我的服务接口中指定它。

我查看了文档,但我还没有找到方法。

0 投票
1 回答
3618 浏览

c# - 无法从移动应用程序连接到 api 端点

我创建了一个 .NET Core Web api 端点,我可以在其中检索一些我想在我的移动应用程序中显示的图像。我通过导航到该路线并通过邮递员在本地测试了端点,两者都工作正常(显示正确的响应)。但是,当我尝试从移动端访问端点时,它不起作用。我得到这个神秘的错误:

以下是更多异常信息:

我不确定我在移动端做错了什么。我知道要让邮递员显示它,我必须关闭 SSL 认证设置。我需要在移动端做类似的事情吗?

这是我尝试调用端点的方式。我正在使用改装:

在哪里:

OnAppearing 在我的代码隐藏中我的一个观点:

我在上面做错了什么?

我正在 Mac OSX 上的 Android 10 (API 29) 模拟器上对此进行测试,后端代码使用 Visual Studio for Mac 在本地运行(后端是 .NET Core 3.1 web api 项目)。

0 投票
0 回答
285 浏览

android - 在 xamarin 中调用 Api 时出现 HttpRequestException

在 xamarin 中,我使用 refit 库调用 api。我已按照说明进行操作,但是在调用异常 api 时返回。不知道我的棱镜组合会不会有影响?我已经调用了手动 api,但它也不起作用我也在互联网上咨询过,但似乎一切仍然不起作用。在高级 Android 选项中,我将 HttpClient 实现设置为 Android,SSL / TSL 实现为 Default (Native TLS 1.2+) 。我能帮帮我吗?

在 MainPageViewModel

错误

System.Net.Http.HttpRequestException Message=mono-io-layer-error (-1) Source=mscorlib StackTrace:在 System.Net.Http.ConnectHelper.ConnectAsync(System.String 主机,System.Int32 端口,System.Threading。 CancellationToken cancelToken) [0x00180] 在 /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/ ConnectHelper.cs:84 在 System.Threading.Tasks.ValueTask 1[TResult].get_Result () [0x0001b] in /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks/ValueTask.cs:813 at System.Net.Http.HttpConnectionPool.CreateConnectionAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x000ea] in /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:371 at System.Threading.Tasks.ValueTask1[TResult].get_Result () [0x0001b] 在 /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/ src/Common/src/CoreLib/System/Threading/Tasks/ValueTask.cs:813 在 System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync (System.Threading.Tasks.ValueTask1[TResult] creationTask) [0x000a2] in /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:529 at System.Threading.Tasks.ValueTask1[TResult].get_Result () [0x0001b] 在 /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks /ValueTask.cs:813 在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync (System.Net.Http.HttpRequestMessage 请求,System.Boolean doRequestAuth,System.Threading.CancellationToken cancelToken)[0x0003f] 在 /Users/builder/jenkins/workspace /archive-mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:284 在 System.Net.Http.RedirectHandler.SendAsync (System.Net.Http.HttpRequestMessage 请求,System.Threading.CancellationToken cancelToken) [0x00070] 在 /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/System.网。Http/src/System/Net/Http/SocketsHttpHandler/RedirectHandler.cs:32 在 System.Net.Http.HttpClient.FinishSendAsyncUnbuffered (System.Threading.Tasks.Task1[TResult] sendTask, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationTokenSource cts, System.Boolean disposeCts) [0x000b3] in /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:531 at Refit.RequestBuilderImplementation+<>c__DisplayClass14_02[T,TBody].b__0(System.Net.Http.HttpClient 客户端,System.Threading.CancellationToken ct,System.Object[] paramList)[0x00188] in :0 at TestApp.ViewModels.MainPageViewModel.Navigate () [0x0003b ] 在 E:\H\Xamarin\TestApp\TestApp\TestApp\ViewModels\MainPageViewModel.cs:58 在 System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.b__7_0 (System.Object 状态) [0x00000] 在 /Users/builder/ jenkins/workspace/archive-mono/2019-08/android/release/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:1021 at Android.App.SyncContext+<>c__DisplayClass2_0.b__0 () [0x00000 ] 在:0 在 Java.Lang.Thread+RunnableImplementor.Run () [0x00008] 在:0 在 Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00009] 在 :0 在 (wrapper动态方法)Android。Runtime.DynamicMethodNameCounter.39(intptr,intptr)

细节异常

  • ex {System.Net.Http.HttpRequestException: mono-io-layer-error (-1) ---> System.Net.Sockets.SocketException: 在 System.Net.Http 的 mono-io-layer-error (-1) /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx 中的 .ConnectHelper.ConnectAsync(System.String 主机,System.Int32 端口,System.Threading.CancellationToken cancelToken)[0x000c8] /src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/ConnectHelper.cs:65 ---内部异常堆栈跟踪结束---在 System.Net.Http.ConnectHelper.ConnectAsync (System.String主机,System.Int32 端口,System.Threading.CancellationToken cancelToken) [0x00180] 在 /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/System.Net.Http /src/System/Net/Http/SocketsHttpHandler/ConnectHelper.cs:84 在 System.Threading.Tasks。价值任务1[TResult].get_Result () [0x0001b] in /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks/ValueTask.cs:813 at System.Net.Http.HttpConnectionPool.CreateConnectionAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x000ea] in /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:371 at System.Threading.Tasks.ValueTask1[TResult].get_Result () [0x0001b] 在 /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks /ValueTask.cs:813 在 System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync (System.Threading.Tasks.ValueTask1[TResult] creationTask) [0x000a2] in /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:529 at System.Threading.Tasks.ValueTask1[TResult].get_Result () [0x0001b] 在 /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/Common/src/CoreLib/System/Threading/Tasks /ValueTask.cs:813 在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync (System.Net.Http.HttpRequestMessage 请求,System.Boolean doRequestAuth,System.Threading.CancellationToken cancelToken)[0x0003f] 在 /Users/builder/jenkins/workspace /archive-mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:284 在 System.Net.Http.RedirectHandler.SendAsync (System.Net.Http.HttpRequestMessage 请求,System.Threading.CancellationToken cancelToken) [0x00070] 在 /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/System.网。Http/src/System/Net/Http/SocketsHttpHandler/RedirectHandler.cs:32 在 System.Net.Http.HttpClient.FinishSendAsyncUnbuffered (System.Threading.Tasks.Task1[TResult] sendTask, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationTokenSource cts, System.Boolean disposeCts) [0x000b3] in /Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:531 at Refit.RequestBuilderImplementation+<>c__DisplayClass14_02[T,TBody].b__0(System.Net.Http.HttpClient 客户端,System.Threading.CancellationToken ct,System.Object[] paramList)[0x00188] in :0 at TestApp.ViewModels.MainPageViewModel.Navigate () [0x00044 ] 在 E:\H\Xamarin\TestApp\TestApp\TestApp\ViewModels\MainPageViewModel.cs:60 } System.Net.Http.HttpRequestException
  • 基础 {System.Exception} System.Exception
  • 数据 {System.Collections.ListDictionaryInternal} System.Collections.ListDictionaryInternal HResult -2147467259 int HelpLink (null) 字符串
  • InnerException {System.Net.Sockets.SocketException} System.Net.Sockets.SocketException
  • 基础 {System.ComponentModel.Win32Exception} System.ComponentModel.Win32Exception
  • 基础 {System.Runtime.InteropServices.ExternalException} System.Runtime.InteropServices.ExternalException
  • 基础 {System.SystemException} System.SystemException
  • 基础 {System.Exception} System.Exception
  • 数据 {System.Collections.ListDictionaryInternal} System.Collections.ListDictionaryInternal HResult -2147467259 int HelpLink (null) string InnerException (null) System.Exception Message "mono-io-layer-error (-1)" string Source "mscorlib" string StackTrace "在 System.Net.Http.ConnectHelper.ConnectAsync (System.String 主机、System.Int32 端口、System.Threa..." 字符串
  • TargetSite {System.Reflection.RuntimeMethodInfo} System.Reflection.RuntimeMethodInfo
  • 基础 {System.Reflection.MethodInfo} System.Reflection.MethodInfo 属性 System.Reflection.MethodAttributes.FamANDAssem | System.Reflection.MethodAttributes.Family | System.Reflection.MethodAttributes.HideBySig System.Reflection.MethodAttributes CallingConvention System.Reflection.CallingConventions.HasThis | System.Reflection.CallingConventions.Standard System.Reflection.CallingConventions ContainsGenericParameters false bool
  • DeclaringType {System.RuntimeType} System.RuntimeType IsGenericMethod false bool IsGenericMethodDefinition false bool IsSecurityCritical true bool IsSecuritySafeCritical true bool IsSecurityTransparent false bool MetadataToken 100680451 int
  • MethodHandle {System.RuntimeMethodHandle} System.RuntimeMethodHandle
  • 模块 {System.Reflection.RuntimeModule} System.Reflection.RuntimeModule 名称“Throw”字符串
  • ReflectedType {System.RuntimeType} System.RuntimeType
  • ReturnParameter {System.Reflection.RuntimeParameterInfo} System.Reflection.RuntimeParameterInfo
  • ReturnType {System.RuntimeType} System.RuntimeType
  • ReturnTypeCustomAttributes {System.Reflection.RuntimeParameterInfo} System.Reflection.RuntimeParameterInfo
  • 非公共成员
    BindingFlags System.Reflection.BindingFlags.Default System.Reflection.BindingFlags
  • ReflectedTypeInternal {System.RuntimeType} System.RuntimeType mhandle 0xffffffff91fc61a8 System.IntPtr 名称“Throw”字符串
  • reftype {System.RuntimeType} System.RuntimeType
  • 静态成员
  • 非公共成员
    ErrorCode -1 int NativeErrorCode -1 int
  • 非公共成员
    ErrorCode -1 int Message "mono-io-layer-error (-1)" string SocketErrorCode System.Net.Sockets.SocketError.SocketError System.Net.Sockets.SocketError
  • 非公共成员
    消息“mono-io-layer-error (-1)”字符串源“mscorlib”字符串 StackTrace“在 System.Net.Http.ConnectHelper.ConnectAsync(System.String 主机,System.Int32 端口,System.Threa …“ 细绳
  • TargetSite {System.Reflection.RuntimeMethodInfo} System.Reflection.RuntimeMethodInfo
  • 静态成员
  • 非公共成员
    _COMPlusExceptionCode -532462766 int
  • s_EDILock {object} 对象
  • 非公共成员
    IsTransient System.NotImplementedException:方法或操作未实现。bool RemoteStackTrace (null) string _HResult -2147467259 int _className "System.Net.Http.HttpRequestException" string
  • _data {System.Collections.ListDictionaryInternal} System.Collections.ListDictionaryInternal _dynamicMethods(空)对象 _helpURL(空)字符串
  • _innerException {System.Net.Sockets.SocketException} System.Net.Sockets.SocketException _message "mono-io-layer-error (-1)" string _remoteStackIndex 0 int _remoteStackTraceString (null) string
  • _safeSerializationManager {System.Runtime.Serialization.SafeSerializationManager} System.Runtime.Serialization.SafeSerializationManager _source "mscorlib" 字符串
  • _stackTrace {System.IntPtr[18]} System.IntPtr[] _stackTraceString (null) 字符串
  • 捕获跟踪 {System.Diagnostics.StackTrace[7]} System.Diagnostics.StackTrace[] 捕获_in_unmanaged 0 int native_trace_ips (null) System.IntPtr[]
0 投票
1 回答
2019 浏览

c# - 将上传文件从 Api 修改为 Api

我正在尝试通过改装将图像从一个 Asp 网络核心后端上传到另一个。

Api

接收控制器

一旦我运行它,我就会得到以下异常:

我尝试按照此处描述的方式进行操作,但没有成功。是不是我做错了什么?

编辑

基于@TomO的回答,我编辑了我的代码,但我仍然得到 null stream

Api 1(发送到 Api 2 的部分):

Api 2(接收器):

改装 API:

0 投票
0 回答
117 浏览

c# - 如何以 xamarin 形式显示带有改装的列表视图

我尝试使用来自 Web 服务的数据 json 以 xamarin 形式显示列表视图

这是我的数据 json:

这是我的编码网络服务:

这是我的 xamarin 形式的编码

接口:
IUserApi.cs

模型:
User.cs

数据返回结果.cs

主页.xaml

MainPage.xaml.cs

单击“获取用户”按钮时收到错误消息。这是一条消息错误:

我尝试更改代码 IUserApi.cs Task<List<DataReturnResult>> getAllUsers(),我从 Get User 收到相同的错误消息

你能帮我解决一下吗?

0 投票
0 回答
99 浏览

c# - 从 .net Core 3.0 控制台应用程序重新调整 API HTTPPost '解析值时遇到意外字符'

我有一个api端点如下

下面的 Dto 是带有合同的 nuget 包中的共享操作

我在控制台应用程序中的调用代码

我得到的异常如下

解析值时遇到意外字符:{。路径'',第 1 行,位置 1。

对 Http get 的调用工作正常,所以我上面的设置有问题

0 投票
2 回答
653 浏览

c# - 使用 Refit 序列化并用作 url 参数时,DateTime 会丢失精度

我正在构建一个 API 网关,它有一个将 DateTime 值作为参数的端点。它使用 Refit 将此查询转发到底层微服务。

我的问题是,在构建微服务查询的 URL 时,DateTime 值失去了精度。

有没有办法在构建 URL 时将 Refit 配置为使用自定义 DateTime 序列化程序?

微服务端点定义如下:

发送到网关的查询:

转发到底层微服务时变成这样:

0 投票
1 回答
2652 浏览

c# - Refit Net core AddRefitClient 读取响应头

对于使用 Refit 处理 REST API 的 WPF .net core 3.1 应用程序,我需要以下代码的帮助。我正在尝试从响应标头中获取 AuthToken 的值。但我找不到拥有 AuthorizationHeaderValueGetter 值的属性。

我确实看到了一些与此问题相关的错误 - https://github.com/reactiveui/refit/issues/689。据称已在 .net core 3.1 版本中修复。但我还没有能够检索到响应头。

应用程序.xaml.cs

IService.cs 接口 IService 已定义如下:

我在我的 ViewModel (WPF) 中注入 IService 并尝试获取应该设置的“AuthToken”标头的值。

视图模型

0 投票
1 回答
472 浏览

c# - 改装:版本化路线

我们在您的一个 API 上使用 Refit 来为该 API 创建和共享客户端包。

并且使用控制器一切正常

问题是现在我们已经添加了 api 版本控制,并且我们选择了按路由进行版本控制。

所以现在端点/category看起来像,我们将很快/v1/category创建一个。/v2/category

有没有办法配置refit(通过属性或类似的)它来理解我的版本化路由?

我想避免为每个新版本的 API 编写一个新客户端,并在端点路由中包含该版本,例如

想象一下,客户端更大,有很多方法,而不仅仅是一个。此外,并非所有方法都可能在版本之间发生变化。