HttpClient PostAsync无效的post格式

我正在尝试使用HttpClient的PostAsync登录网站; 但总是失败,当我使用WireShark跟踪连接时,我发现它错误地发布了数据

var content = new FormUrlEncodedContent(new[] { new KeyValuePair("value1", data1), new KeyValuePair("value2", data2), new KeyValuePair("value3", data3) }); 

要么

 var content = new List<KeyValuePair> { new KeyValuePair("value1", data1), new KeyValuePair("value2", data2), new KeyValuePair("value3", data3) }; 

用法

 httpClient.PostAsync(postUri, content) 

期望

 value1=123456&value2=123456&value3=123456 

现实

 //It adds strange += which makes the post fail... value1=123456&value2+=123456&value3+=123456 

我知道这有效:

 var values = new List>(); values.Add(new KeyValuePair("Item1", "Value1")); values.Add(new KeyValuePair("Item2", "Value2")); values.Add(new KeyValuePair("Item3", "Value3")); using (var content = new FormUrlEncodedContent(values)) { client.PostAsync(postUri, content).Result) } 

修剪可能的空格的参数。 空格导致+

 var content = new List> { new KeyValuePair("value1", data1.Trim()), new KeyValuePair("value2", data2.Trim()), new KeyValuePair("value3", data3.Trim()) }; 

在我看来,这更好看:

 var variables = new Dictionary() { { "value1", value1 }, { "value2", value2 } }; var content = new FormUrlEncodedContent(variables); 

并且字典可以用于在加载时检查重复值,除非您需要重复键…