带有其他参数的 C# HttpClient Post 字符串数组
Posted
技术标签:
【中文标题】带有其他参数的 C# HttpClient Post 字符串数组【英文标题】:C# HttpClient Post String Array with Other Parameters 【发布时间】:2015-04-22 08:13:14 【问题描述】:我正在编写一个 C# api 客户端,对于大多数发布请求,我使用 FormUrlEncodedContent 发布数据。
List<KeyValuePair<string, string>> keyValues = new List<KeyValuePair<string, string>>();
keyValues.Add(new KeyValuePair<string, string>("email", email));
keyValues.Add(new KeyValuePair<string, string>("password", password));
var content = new FormUrlEncodedContent(keyValues);
但是现在我需要发布一个字符串数组作为一个参数。如下所示。
string[] arr2 = "dir1", "dir2";
如何使用 c# HttpClient 将此数组与其他字符串参数一起发送。
【问题讨论】:
你为什么用List<KeyValuePair<string, string>>
而不是Dictionary<string, string>?
@Ksv3n 我必须发布一个字符串数组,而不是字符串值。
可以使用 JSON 吗?
Will keyValues.Add(new KeyValuePair我遇到了同样的问题,我必须将一些常规字符串参数和一个字符串数组添加到 Http POST 请求正文中。
为此,您必须执行类似于以下示例的操作(假设您要添加的数组是一个名为 dirArray
的字符串数组):
//Create List of KeyValuePairs
List<KeyValuePair<string, string>> bodyProperties = new List<KeyValuePair<string, string>>();
//Add 'single' parameters
bodyProperties.Add(new KeyValuePair<string, string>("email", email));
bodyProperties.Add(new KeyValuePair<string, string>("password", password));
//Loop over String array and add all instances to our bodyPoperties
foreach (var dir in dirArray)
bodyProperties.Add(new KeyValuePair<string, string>("dirs[]", dir));
//convert your bodyProperties to an object of FormUrlEncodedContent
var dataContent = new FormUrlEncodedContent(bodyProperties.ToArray());
【讨论】:
我使用 ExpandoObject 完成此操作并序列化为 json。以上是关于带有其他参数的 C# HttpClient Post 字符串数组的主要内容,如果未能解决你的问题,请参考以下文章
使用带有表单编码参数和标头的 C# httpclient 发布
带有返回内容的 Task<string> 的 C# httpclient
发送带有 C# 错误 403 的文件和数据。CURL 没有错误
带有标题和内容c#的HttpClient PostAsync [重复]