1
0
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:
Jkorf
2026-09-16 14:56:16 +02:00
parent 404d62ee5c
commit e5da147ba8
+23 -6
View File
@@ -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>