У меня есть строка запроса с символами Юникода, например."http://api.test.com?q=Túls Engeniería
".
Я отправляю эту строку запроса в запросе get, метод BuildUrl
возвращает закодированную строку - httpclient.GetAsync("http://api.test.com?q=T%u00fals+Engenier%u00eda")
, но в запросе, который я вижу в запросе fiddler, кодируется дополнительно - "http://api.test.com?q=T%25u00fals+Engenier%25u00eda
", Как я могу предотвратить это двойное кодирование?
private async Task<string> MakeGetCall(string apiVersion, string url, string accessToken, NameValueCollection urlParameters = null)
{
var client = GetHttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(Constants.AUTHORIZATION_HEADER_VALUE_CONST_PART, accessToken);
var result = await client.GetAsync(BuildUrl(apiVersion + url, urlParameters));
result.EnsureSuccess();
return await result.Content.ReadAsStringAsync();
}
private string BuildUrl(string baseUrl, NameValueCollection urlParameters)
{
string finalUrl = baseUrl;
if (urlParameters != null)
{
var builder = new UriBuilder(string.Empty, baseUrl);
var query = HttpUtility.ParseQueryString(builder.Query);
query.Add(urlParameters);
builder.Query = query.ToString();
finalUrl = builder.ToString();
}
return finalUrl;
}