Получение httpResponse StatusCode из API - PullRequest
0 голосов
/ 04 июня 2018

Это HTTP-ответ, который я отправляю из моего API в случае ошибки.

return new System.Net.Http.HttpResponseMessage() { StatusCode = (System.Net.HttpStatusCode)System.Net.HttpStatusCode.BadRequest, ReasonPhrase = "Incoming element is null" };

, которую Почтальон правильно видит как

"statusCode": 400,
"reasonPhrase": "Incoming element is null",

Так что код API в порядке,когда я вызываю API из моего консольного приложения HttpWebResponse, используя следующее

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost/");
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

httpResponse.StatusCode is OK.

Как получить возвращенный StatusCode из API длябыть доступным / видимым в приложении вызывающей консоли.

1 Ответ

0 голосов
/ 05 июня 2018

httpResponse - это ответ «Я подключен», а не возвращенный ответ от API, к которому был получен доступ с использованием

using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
    string result = streamReader.ReadToEnd();

для потоковой передачи результата обратно из API, который был ответом JSONменя почтальон.

Поэтому вместо этого я десериализовал возвращенный JSON в объект и использовал его для проверки правильности, например, так.Сначала мой класс хранения

public class ReturnedJSONModel {
    public System.Net.HttpStatusCode statusCode { get; set; }
    public string reasonPhrase { get; set; }
}

, затем этот, чтобы заполнить его и обработать ответ (обратите внимание, что это консольная программа, поэтому для сообщения об успехе / неудаче используется Console.WriteLine.

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
if (httpResponse.StatusCode == HttpStatusCode.OK) {
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
        string result = streamReader.ReadToEnd();
        ReturnedJSONModel objJSON = JsonConvert.DeserializeObject<ReturnedJSONModel>(result);
        switch(objJSON.statusCode) {
            case System.Net.HttpStatusCode.Accepted:
                Console.WriteLine("Success : " + objJSON.reasonPhrase);
                break;
            case System.Net.HttpStatusCode.BadRequest:
                Console.WriteLine("BadRequest : " + objJSON.reasonPhrase);
                break;
            case System.Net.HttpStatusCode.ServiceUnavailable:
                Console.WriteLine("ServiceUnavailable : " + objJSON.reasonPhrase);
                break;
            default:
                Console.WriteLine("Unknown error : " + objJSON.reasonPhrase);
                break;
        }
    }
} else {
    Console.WriteLine("Error StatusCode = " + httpResponse.StatusCode);
}
...