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);
并且字典可以用于在加载时检查重复值,除非您需要重复键…