我使用的是处于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上不起作用。
Azure Artifacts版本是5.0.67,并且包含QueryUriFormat