C#:HttpClient POST 传递参数 - 一个字符串和 int 数组

Mil*_*oyu 0 c# post httpclient

我在调用 API 时遇到一些问题。我需要发送包含两件事的发布数据:一个 ID 和一个 int 数组。我尝试了很多方法,但都导致错误或根本没有以正确的方式发送数据。我找到的所有答案都没有处理我想发送两种不同数据类型的事实。

在另一边我有:

Call<DefaultResponseList> someMethod(@Field("parm1") String parm1, @Field("parm2[]") ArrayList<Integer> parm2);
Run Code Online (Sandbox Code Playgroud)

我试过:

List<int> ints1 = new List<int>();
ids.Add(1);
ids.Add(2);
ids.Add(3);

var values = new List<KeyValuePair<string, object>>
{
    new KeyValuePair<string, object>("parm1", "lkdjfowejfd123"),
    new KeyValuePair<string, object>("parm2", ints1)

};

var httpClient = new HttpClient(new HttpClientHandler());
HttpResponseMessage response = await httpClient.PostAsync(someUrl, new FormUrlEncodedContent(values));
response.EnsureSuccessStatusCode();

string data = await response.Content.ReadAsStringAsync();            
Run Code Online (Sandbox Code Playgroud)

Mil*_*oyu 5

我解决了这个问题。感谢 Cihan Uygun 的评论。

List<int> ids = new List<int>();
ids.Add(1);
ids.Add(2);
ids.Add(3);

var values = new List<KeyValuePair<string, string>>
{
    new KeyValuePair<string, string>("parm1", "lkdjfowejfd123")
};

int counter = 0;
foreach (int i in ids)
{
    values.Add(new KeyValuePair<string, string>("parm2[" + counter.ToString() + "]", i.ToString()));
    counter++;
}

var httpClient = new HttpClient(new HttpClientHandler());
HttpResponseMessage response = await httpClient.PostAsync(urlSaveRegions, new FormUrlEncodedContent(values));
response.EnsureSuccessStatusCode();

string data = await response.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)