2016-08-08 15 views
0

コンソールアプリケーションからWeb APIと通信する必要があります。そのようにそれに渡されたAPIは、2つの変数を必要とする コンソールアプリケーションからWeb APIにパラメータを渡す

/パラメータは:
[HttpPost("api/loans/range/enroll/{loanStart}/{loanEnd}")] 
    public IActionResult PostLoanData(DateTime loanStart, DateTime loanEnd) 
    { 
     Loans.CreateLoanDates(loanStart, loanEnd); 
     return NoContent(); 
    } 

は、だから私のメインの方法では、私はこのような何かをした:

static void Main(string[] args) 
{ 
     var LoanDateRange = new Dictionary<string, string> 
       { 
        {"loanStart", startDate.ToString()}, 
        {"loanEnd", endDate.ToString()} 
       }; 

     var json = JsonConvert.SerializeObject(LoanDateRange); 
     HttpClient client = new HttpClient(); 
     client.PostAsync("http://mybank1.com/api/loans/range/enroll", new StringContent(json, Encoding.UTF8, "application/json")) 
      .ContinueWith(task => { 
       var response = task.Result; 
        Console.WriteLine(response.Content.ReadAsStringAsync().Result); 
       }); 
     Console.ReadLine(); 
} 

私はプログラムIを実行すると、単にnull例外が発生します。

どのようにコンソールアプリケーションから必要なものを与えることができますか?それとも、コンソールアプリケーションとのやり取りがより良くなるようにAPIを変更することはできますか?

ありがとうございます!

+1

を呼び出し、その後

[HttpPost("api/loans/range/enroll")] public IActionResult PostLoanData([FromBody] DateModel loan) { Loans.CreateLoanDates(loan.LoadStart, loan.LoadEnd); return NoContent(); } 

を更新したモデル

class DateModel { public DateTime LoadStart {get;set;} public DateTime LoadEnd {get;set;} } 

を作成し、この方法を試してみてください??? – Tseng

答えて

2

は、あなたのAPIは、コンソールアプリからあなたたstartDate/endDateに初期化されている

static void Main(string[] args) 
{ 
    var LoanDateRange = new DateModel(); 
     LoanDateRange.LoadStart = startDate.ToString(); 
     LoanDateRange.LoadEnd = endDate.ToString(); 

    UploadAsync(LoanDateRange); 

    Console.ReadLine(); 
} 

public static async Task UploadAsync(DateModel LoanDateRange) 
    { 
     using (var client = new HttpClient()) 
      { 
       client.BaseAddress = new Uri("http://mybank1.com/"); 
       client.DefaultRequestHeaders.Accept.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

       StringContent content = new StringContent(JsonConvert.SerializeObject(LoanDateRange), Encoding.UTF8, "application/json"); 

       try 
       { 
        HttpResponseMessage response = await client.PostAsync("api/loans/range/enroll", content); 
        if (response.IsSuccessStatusCode) 
        { 
         // "Success", MessageBoxButtons.OK); 
        } 
       } 
       catch (Exception) 
       { 
        // ignored 
       } 
      } 
    } 
+1

メインメソッドで待つことができません;) – Tseng

+1

そして、リクエスト本体でモデルをjson – Tseng

+0

@Tsengとして渡すと、 '[FromBody]'属性を使う必要があります – Mostafiz

関連する問題