2016-09-17 13 views
0

APIの呼び出しに問題があります。 IDとintの配列の2つのものを含む投稿データを送信する必要があります。 私は多くのことを試みましたが、すべてエラーが発生したり、正しい方法でデータが送信されませんでした。私が見つけたすべての答えは、2つの異なるデータ型を送信したいという事実を処理しません。私が持っている他の側ではC#:HttpClient POSTパスパラメータ - 1つの文字列と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'の環境を知っておいて、この情報に従って値を整理する必要があります。 Exターゲット環境がApache/PHPサーバーの場合、キーはparam2 []と似ています。従来のASP.NET envrionmentの値には同じキー名が必要です。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(); 
関連する問題