0

Je travaille sur une application de console qui peut exécuter quelques méthodes à partir d'une API web existante. Je veux que l'application console écrive le code d'état qui est retourné, mais j'ai du mal à trouver une syntaxe qui fonctionne. Par exemple, voici une méthode de mise à jour qui fonctionne actuellement comme je le souhaite en dehors de la réponse Web. Je comprends que ma réponse au code d'état actuel ne fonctionne pas. J'ai essayé beaucoup d'autres choses, et je suis juste coincé dès maintenant. Qu'est-ce que je rate?Comment renvoyer le code d'état HTTP d'une méthode de mon API Web vers le principal?

Modifier

Voici le code qui fait référence à _service.UpdateOrder:

public List<Stream> UpdateOrder(string orderID, bool processing, DateTime procDate, bool Complete) 
    { 
     var request = new RestRequest(StreamUrl, Method.PUT) 
     { 
      RequestFormat = DataFormat.Json 
     }; 

     request.AddParameter("OrderID", orderID); 
     ... 


     var response = _client.Execute<List<Stream>>(request); 
     if (response.StatusCode == System.Net.HttpStatusCode.Created || response.StatusCode == System.Net.HttpStatusCode.OK) 
      return response.Data; 
     else 
      throw new Exception("Invalid input. Table could not be updated."); 
+0

Que retourne effectivement '_service.UpdateOrder'? –

+0

Devrions-nous supposer que _service est un WebReference qui enveloppe WebMethods dans un fichier .aspx ou .asmx? Si c'est le cas, le code WebReference généré par MS tentera de gérer les statuts HTTP pour vous et lancera une exception pour l'un des états d'échec. –

+0

J'ai ajouté le code 'UpdateOrder' @JamieR – joey8oro

Répondre

1

La question que vous avez est que vous retournez un stream de votre méthode UpdateOrder.

Actuellement, vous pouvez uniquement accéder à la propriété StatusCode dans votre méthode UpdateOrder comme vous êtes:

if (response.StatusCode == System.Net.HttpStatusCode.Created) 

Si vous souhaitez accéder à la propriété StatusCode de votre code d'appel alors vous devez revenir IRestResponse de la UpdateOrder comme ce qui suit:

public IRestResponse UpdateOrder(string orderID, bool processing, DateTime procDate, bool Complete) 
{ 
    var request = new RestRequest(StreamUrl, Method.PUT) 
    { 
     RequestFormat = DataFormat.Json 
    }; 

    request.AddParameter("OrderID", orderID); 
    ... 


    var response = _client.Execute<List<Stream>>(request); 
    if (response.StatusCode == System.Net.HttpStatusCode.Created || response.StatusCode == System.Net.HttpStatusCode.OK) 
     return response; 
    else 
     throw new Exception("Invalid input. Table could not be updated."); 
} 

puis dans votre code d'appel:

Console.WriteLine("Please enter a valid order item number for the specific data you want to update:"); 
        string oNum = Console.ReadLine(); 

    //more prompts for user to enter data to update 

    ... 

var update = _service.UpdateOrder(oNum, oProc, oProcDate, oComplete); 
Console.WriteLine("Status code: {0}", (update.StatusCode)); 
// You can access the List<Stream> from update.Data 
+0

Cela semblait m'avoir rapproché, mais même quand j'essaye de mettre à jour un ensemble de données inexistant, je reçois quand même "OK" comme code d'état. – joey8oro

+0

@ joey8oro Cela a quelque chose à voir avec le point de terminaison API que vous appelez. Nous ne pouvons pas vous aider avec ça. –