mirror of
https://github.com/JKorf/CryptoExchange.Net.git
synced 2026-10-19 01:20:56 +00:00
Fixed parameters to form data url encoding in .Net Framework when parameters contain special characters
This commit is contained in:
@@ -146,25 +146,42 @@ namespace CryptoExchange.Net
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string ToFormData(this IDictionary<string, object> parameters)
|
public static string ToFormData(this IDictionary<string, object> parameters)
|
||||||
{
|
{
|
||||||
var formData = HttpUtility.ParseQueryString(string.Empty);
|
var result = new StringBuilder();
|
||||||
|
var first = true;
|
||||||
|
|
||||||
|
void Append(string key, object value)
|
||||||
|
{
|
||||||
|
if (!first)
|
||||||
|
result.Append('&');
|
||||||
|
first = false;
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(key))
|
||||||
|
{
|
||||||
|
result.Append(HttpUtility.UrlEncode(key, Encoding.UTF8));
|
||||||
|
result.Append('=');
|
||||||
|
}
|
||||||
|
|
||||||
|
var text = string.Format(CultureInfo.InvariantCulture, "{0}", value);
|
||||||
|
result.Append(HttpUtility.UrlEncode(text, Encoding.UTF8));
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var kvp in parameters)
|
foreach (var kvp in parameters)
|
||||||
{
|
{
|
||||||
if (kvp.Value is null)
|
if (kvp.Value is null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (kvp.Value.GetType().IsArray)
|
if (kvp.Value is Array array)
|
||||||
{
|
{
|
||||||
var array = (Array)kvp.Value;
|
|
||||||
foreach (var value in array)
|
foreach (var value in array)
|
||||||
formData.Add(kvp.Key, string.Format(CultureInfo.InvariantCulture, "{0}", value));
|
Append(kvp.Key, value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
formData.Add(kvp.Key, string.Format(CultureInfo.InvariantCulture, "{0}", kvp.Value));
|
Append(kvp.Key, kvp.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return formData.ToString()!;
|
return result.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user