如何停止对我的查询字符串进行Refit编码?

问题描述 投票:0回答:1

我使用的是处于beta状态的API,它本质上是Mongodb db的查询字符串作为参数。 Refit正在对我的url进行编码,其中包括许多花括号,并且他们的服务器不喜欢它,并且它实际上会忽略我的所有查询属性。

我尝试将整个查询作为字符串传递,这不起作用,但也不会消除错误。我找到了对改装的承诺,可以直接解决此问题:https://github.com/reactiveui/refit/pull/726/commits/17002e2c5636aa52c9816708d852a79aab549aa3那就是说要使用标题[QueryUriFormat(UriFormat.Unescaped)],听起来不错,但我显然没有使用QueryUriFormat属性所在的库,而且在Google搜索中找不到它。

在界面中:

[QueryUriFormat(UriFormat.Unescaped)]
[Headers("Authorization: Basic")]
[Get("/stuff/etc")]
Task<myModel> GetStuff(string q);

字符串:

"filter={name:'THENAME',timestamp:{$gt:1571238110000},TOTAL_MB: {$gt:0},thingyId:{$eq:2500}}";

通话:var result = client.GetUsageSince(stringB).Result;

我尝试了第一个评论的链接(如下)var HttpClient = new HttpClient(new UriQueryUnescapingHandler()){BaseAddress = new Uri(url)};HttpClient.DefaultRequestHeaders.Add(“ Accept”,“ application / json”);HttpClient.DefaultRequestHeaders.Add(“ Content”,“ application / json”);var byteArray = Encoding.UTF8.GetBytes($“ {username}:{password}”));HttpClient.DefaultRequestHeaders.Authorization =新的System.Net.Http.Headers.AuthenticationHeaderValue(“ Basic”,Convert.ToBase64String(byteArray));内容= RestService.For(HttpClient,refitSettings);

完成此操作后,现在看来绝对Uri是正确的,但是基本的auth标头在我的客户HttpClient上不起作用。

c# uri refit
1个回答
0
投票

Azure Artifacts版本是5.0.67,并且包含QueryUriFormat

© www.soinside.com 2019 - 2024. All rights reserved.