2015-09-29 141 views
1

我想發送一個對象作爲httprequest的一部分。這些值從Specflow表中填充。HttpClient PostAsJsonAsync請求

public class Request 
{ 
    public Dictionary<string, dynamic> RequestParameters = 
                new Dictionary<string, dynamic>(); 
    public void setRequestParameters(Table table) 
    { 

     foreach (var row in table.Rows) 
     { 
      try 
      { 
       RequestParameters.Add(row[0], row[1]); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.Message); 
      } 
     } 
    } 
} 

Request request = new Request(); 
request.setRequestParameters(table); 
var result = client.PostAsJsonAsync<Request>(_address.ToString(), request).Result; 

值送到但是我不想封閉值成員名稱(requestParameters的)。有沒有辦法忽略它?

{ 
    "RequestParameters":{ 
     "InitialCashAmount":"10000.00", 
     "TransferAmount":"5000.00", 
     "PersonalRegularContribution":"100.00" 
    } 
} 
+0

如果你通過request.RequestParameters,而不是要求自己PostAsJsonAsync什麼?你看到有什麼不同嗎? –

+0

你使用'dynamic'而不是'object'的原因是什麼? –

+0

@Yuval:計劃採取不同的關鍵,​​值和值可以是任何數據類型。然而,剛剛意識到Specflow將所有表值作爲字符串傳遞,因此此解決方案無法工作。 例如鑑於我有以下值 | FieldKey | FieldValue | | InitialAmount | 1000.00 | |貨幣|「GBP」| – DesertRose

回答

0

使用request.RequestParameters

var result = client.PostAsJsonAsync<Dictionary<string, dynamic>>(_address.ToString(), request.RequestParameters).Result; 
+0

現在我得到這個錯誤錯誤'System.Net.Http.HttpClient'不包含'PostAsJsonAsync'的定義和最佳擴展方法重載'System.Net.Http.HttpClientExtensions.PostAsJsonAsync (System.Net .Http.HttpClient,string,T)'有一些無效參數\t 錯誤參數3:無法從'System.Collections.Generic.Dictionary <字符串,動態>'轉換爲'Go.RequestBuilders.Request'\t C :\ AcceptanceTestSteps \ ServiceCallSteps.cs – DesertRose

+0

@DesertRose您需要:PostAsJsonAsync >(...)而不是? –

+0

@Siva:就像一個魅力。 – DesertRose