0

저는 기존 웹 API에서 몇 가지 방법을 실행할 수있는 콘솔 앱을 만들고 있습니다. 콘솔 응용 프로그램에서 반환되는 상태 코드를 작성하고 싶지만 작동하는 구문을 찾기 위해 고심하고 있습니다.내 웹 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 상태를 처리하려고 시도하며 실패 상태에 대한 예외를 throw합니다. –

+0

나는'UpdateOrder' 코드 @JamieR을 추가했습니다. – joey8oro

답변

1

:

편집 여기

_service.UpdateOrder가 참조하는 코드입니다. 당신이 당신의 호출 코드에서 StatusCode 속성에 액세스하려면

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

은 당신이 UpdateOrder 등으로부터 IRestResponse를 반환해야합니다

현재 당신은 당신이 현재처럼 UpdateOrder 방법 내부의 StatusCode 속성에 액세스 할 수 있습니다 다음 : 당신의 호출 코드에서 다음

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 엔드 포인트와 관련이 있습니다. 우리는 당신을 도울 수 없습니다. –