2016-09-17 116 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(); 
相關問題