2016-09-17 78 views
0

我有调用API的一些问题。我需要发送包含2件事情的发布数据:一个ID和一个int数组。 我尝试了很多东西,都导致错误或者根本没有以正确的方式发送数据。我发现的所有答案都不处理我想发送2种不同数据类型的事实。C#:HttpClient POST传递参数 - 一个字符串和int数组

在另一边我有:

Call<DefaultResponseList> someMethod(@Field("parm1") String parm1, @Field("parm2[]") ArrayList<Integer> parm2); 

我想:

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();    
+0

你应该知道'someUrl'的环境,然后根据这些信息来安排你的值。例如,如果目标环境是Apache/PHP服务器,则您的密钥应该像param2 [],因为传统的ASP.NET环境值应该与occurence具有相同的密钥名称,并且如果其ASP.NET MVC密钥应该包含诸如param2 [0 ],param2 [1]等。 –

+0

目标环境是一个Apache/PHP服务器。 – Miljkoyu

回答

2

我解决了这个问题。 感谢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(); 
相关问题