C# 如何停止重新安装查询字符串的编码?
我使用的是一个测试版API,它本质上是Mongodb的查询字符串作为参数。Refit正在对我的url进行编码,其中包含大量大括号,他们的服务器不喜欢它,它实际上忽略了我的所有查询属性 我尝试将整个查询作为字符串传递,这不起作用,但也不会抛出错误。我发现了一个直接解决这个问题的重新安装承诺。 这意味着使用标题C# 如何停止重新安装查询字符串的编码?,c#,uri,refit,C#,Uri,Refit,我使用的是一个测试版API,它本质上是Mongodb的查询字符串作为参数。Refit正在对我的url进行编码,其中包含大量大括号,他们的服务器不喜欢它,它实际上忽略了我的所有查询属性 我尝试将整个查询作为字符串传递,这不起作用,但也不会抛出错误。我发现了一个直接解决这个问题的重新安装承诺。 这意味着使用标题[QueryUriFormat(UriFormat.Unescaped)],听起来不错,但我显然没有使用QueryUriFormat属性所在的库,我在谷歌搜索中找不到它 在界面中: [Quer
[QueryUriFormat(UriFormat.Unescaped)]
,听起来不错,但我显然没有使用QueryUriFormat
属性所在的库,我在谷歌搜索中找不到它
在界面中:
[QueryUriFormat(UriFormat.Unescaped)]
[Headers("Authorization: Basic")]
[Get("/stuff/etc")]
Task<myModel> GetStuff(string q);
电话:
var result = client.GetUsageSince(stringB).Result;
我尝试了第一条评论的链接(如下)
var-HttpClient=new-HttpClient(new-UriQueryUnescapingHandler()){BaseAddress=new-Uri(url)};
HttpClient.DefaultRequestHeaders.Add(“接受”、“应用程序/json”);
HttpClient.DefaultRequestHeaders.Add(“内容”、“应用程序/json”);
var byteArray=Encoding.UTF8.GetBytes($“{username}:{password}”);
HttpClient.DefaultRequestHeaders.Authorization=新系统.Net.Http.Headers.AuthenticationHeaderValue(“Basic”,Convert.ToBase64String(byteArray));
Stuff=RestService.For(HttpClient,设置);
执行此操作后,看起来绝对Uri现在是正确的,但是基本的auth头在我的客户
HttpClient
上不起作用。我在转义字符方面遇到了类似的问题,并且正在寻找相同的解决方案,但似乎QueryRiAttribute的修复程序尚未进入Nuget包。糟糕,但这还没有准备好使用。您可以在这里查看它的历史,我在转义字符方面遇到了类似的问题,并且正在寻找相同的解决方案,但是看起来QueryRiatAttribute的修复程序还没有进入Nuget包。糟糕,但这还没有准备好使用。你可以在这里看看它的历史
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 = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
Stuff = RestService.For<IStuff>(HttpClient, refitSettings);