2017-04-04 5 views
0

Hallo Ich lerne WebApi und habe dieses Problem. Stunden der Suche brachten keine Lösung.Webapi mit zwei Parametern konsumieren

Ich versuche eine API zu nennen, die zwei Parameter nur zu Testzwecken übergibt. Der, auf dem ich 404 Fehler erhalte, ist GetBalance(param1, param2). Ich habe eine andere Funktion, die von der API offengelegt wird, genannt GetOffice(param1) mit einem Parameter, der 200 zurückgibt. Das 404, das ich bekomme, ist für die Funktion mit zwei Parametern.

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); 
    } 

Strecke

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

ich 404 nicht gefunden Fehler. Was muss falsch sein? Hilfe geschätzt. Danke

+5

fehlt '/' 'zwischen accountNumber' und' officeId'? –

Antwort

1

Scheint wie Ihre Anfrage URI ist nicht korrekt.

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

Probieren Sie den folgenden Code.

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 war mit der URI.Worked now.Thank Sie, mein Herr. – OLDMONK

2

Verwenden Sie ein Ansichtsmodell auf Ihrem Web-API-Controller, der beide Eigenschaften enthält. Also statt:

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

Verwendung:

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

Vielen Dank sir.Can Sie sagen mir die Vorteile der Verwendung von Viewmodel? – OLDMONK

Verwandte Themen