User 10734264 Ответов: 1

Обработка ошибок метода C# post API


в приведенном ниже коде, если статус равен 200, то все в порядке, иначе он перенаправляется на метод catch, так что я не могу получить подробный ответ об ошибке на api.

На этой линии
var response = client.UploadString(webApiUrl, serialisedData);

он перенаправляет на метод catch, если статус api не равен 200.

public object postWebApi(object data, Uri webApiUrl, string id, string password)
       {
           // Create a WebClient to POST the request
           WebClient client = new WebClient();
           client.Encoding = Encoding.UTF8;

           // Set the header so it knows we are sending JSON
           client.Headers[HttpRequestHeader.ContentType] = "application/json";

           // Serialise the data we are sending in to JSON
           string serialisedData = JsonConvert.SerializeObject(data);

           string auth = string.Format("{0}:{1}", id, password);
           string enc = Convert.ToBase64String(Encoding.ASCII.GetBytes(auth));
           string cred = string.Format("{0} {1}", "Basic", enc);

           client.Headers[HttpRequestHeader.Authorization] = cred;
           // Make the request
           var response = client.UploadString(webApiUrl, serialisedData);

           // Deserialise the response into a GUID
           return JsonConvert.DeserializeObject(response);
       }


Что я уже пробовал:

Пожалуйста, помогите в случае успеха это нормально, если статус ответа равен 400 или другой не смог прочитать respnse api.

Kornfeld Eliyahu Peter

Если бы не было никаких исключений, единственный способ пойти-это посмотреть на ответ... Это строка, которая пришла с сервера как есть... К сожалению, для этого нет стандарта, но он, вероятно, будет содержать код ответа HTTP... Выполните некоторую отладку с различными URI и данными...

1 Ответов

Рейтинг:
7

User 10734264

var response = string.Empty;
            try
            {
                response = client.UploadString(webApiUrl, serialisedData);
            }
            catch (WebException ex)
            {
                if (ex.Response != null)
                {
                    response = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
                }
            }


Если исключение будет найдено, то мы получим ответ.