0

私は、既存のWeb APIからいくつかのメソッドを実行できるコンソールアプリケーションを開発中です。コンソールアプリケーションで返されるステータスコードを書きたいと思っていますが、動作する構文を見つけるのには苦労しています。Web APIのメソッドからHTTPステータスコードをmainに戻すにはどうすればよいですか?

たとえば、ここではウェブのレスポンスを除いて、現在動作しているアップデート方法があります。

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

なぜ私の現在のステータスコード応答が機能しないのか理解しています。私は他の多くのことを試してきましたが、今のところ止まっています。私は何が欠けていますか?あなたはUpdateOrder方法からstreamを戻ってきていることをあなたが持っている問題がある

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

'_service.UpdateOrder'は実際に何を返しますか? –

+0

_serviceは、WebMethodsを.aspxファイルまたは.asmxファイルでラップするWebReferenceであると仮定する必要がありますか?その場合、MSによって生成されたWebReferenceコードは、あなたのために任意のHTTPステータスを処理しようとし、失敗ステータスのいずれかに対して例外をスローします。 –

+0

私は 'UpdateOrder'コード@JamieRを追加しました – joey8oro

答えて

1

編集ここ

_service.UpdateOrderが参照するコードです。

あなたが現在のように現時点であなただけのUpdateOrderメソッド内StatusCodeプロパティにアクセスすることができます

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

あなたは、呼び出し元のコードからStatusCodeプロパティにアクセスしたい場合、あなたは以下のようにUpdateOrderからIRestResponseを返す必要が次

あなたの呼び出し元のコードで
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."); 
} 

、その後:

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

これは私を近づけたようですが、存在しないデータセットを更新しようとしても、ステータスコードとして「OK」が返されます。 – joey8oro

+0

@ joey8oroこれはあなたが呼び出しているAPIエンドポイントと関係があるものです。私たちはあなたにそれを手助けすることはできません。 –

関連する問題