2017-04-04 11 views
0

こんにちは私はWebApiを学習しており、この問題を抱えています。何時間もの検索で何の解決策も得られなかった。2つのパラメータを持つwebapiを使用する

私は、テスト目的のために2つのパラメータを渡すAPIを呼び出そうとしています。私が404エラーを受け取っているのはGetBalance(param1, param2)です。私はAPIを公開した別の関数をGetOffice(param1)とし、200を返す1つのパラメータを持っています。404は2つのパラメータ関数用です。

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

? –

答えて

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) 
{ 
    ... 
} 

使用: `/` accountNumber`と `` officeId`間行方不明

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

ありがとうございます。ビューモデルを使用することの賛否を教えてください。 – OLDMONK

関連する問題