2017-04-04 35 views
0

你好,我正在學習WebApi,並得到了這個問題。搜索小時數沒有產生任何解決方案。消費帶兩個參數的webapi

我想調用一個API來傳遞兩個參數只是爲了測試目的。我得到404錯誤的那個是GetBalance(param1, param2)。我有另一個函數暴露的Api稱爲GetOffice(param1)與一個參數,返回200.我得到的404是兩個參數函數。

public void GetBalance(string accountNumber,int officeId) 
    { 
     using (var client = new WebClient()) 
     { 
      client.Headers.Add("Content-Type:application/json"); 
      client.Headers.Add("Accept:application/json"); 
      client.Headers.Add("API_KEY","1234CHECK"); 
      var result = client.DownloadString("http://localhost/api/Accounts/GetBalance/" + accountNumber + officeId); //URI 
      Console.WriteLine(Environment.NewLine + result); 

     } 
    } 

static void Main(string[] args) 
    { 
     ConsumeApiSync objSync = new ConsumeApiSync(); 
     objSync.GetBalance("01-13-00000595", 1); 
    } 

路線

RouteTable.Routes.MapHttpRoute("OfficeApi", "api/{controller}/{action}/{accountNumber}/{officeId}"); 

我收到404未找到錯誤。什麼一定是錯的?幫助讚賞。謝謝

+5

缺少'/''accountNumber'和'officeId'之間? –

回答

1

似乎你的請求URI不正確。

var uri = string.Concat("http://localhost/api/Accounts/GetBalance/", accountNumber, "/", officeId); 

請嘗試下面的代碼。

public void GetBalance(string accountNumber,int officeId) 
{ 
    using (var client = new WebClient()) 
    { 
     client.Headers.Add("Content-Type:application/json"); 
     client.Headers.Add("Accept:application/json"); 
     client.Headers.Add("API_KEY","1234CHECK"); 
     var uri = string.Concat("http://localhost/api/Accounts/GetBalance/", accountNumber, "/", officeId); 
     var result = client.DownloadString(uri); //URI 
     Console.WriteLine(Environment.NewLine + result); 

    } 
} 

static void Main(string[] args) 
{ 
    ConsumeApiSync objSync = new ConsumeApiSync(); 
    objSync.GetBalance("01-13-00000595", 1); 
} 
+0

Prob與URI一起工作。謝謝你,先生。 – OLDMONK

2

在包含這兩個屬性的Web Api控制器上使用視圖模型。因此,而不是:

public HttpresponseMessage GetBalance(string accountNumber,int officeId) 
{ 
    ... 
} 

使用:

public HttpresponseMessage Post(ViewModelName model) 
{ 
    ... 
} 
var uri = string.Concat("http://localhost/api/Accounts/GetBalance",model); 
+0

謝謝先生。你能告訴我使用viewmodel的優點嗎? – OLDMONK