Получение исключения 400 в вызове HttpWebRequest - PullRequest
0 голосов
/ 07 мая 2020

Я использую Postman, чтобы получить ответ от конечной точки отдыха, и если я передаю неправильные данные, я получаю исключение 400, что очень правильно согласно logi c.

enter image description here

Но если я попытаюсь вызвать тот же веб-запрос из кода C# (с тем же неправильным параметром), я получаю исключение, но не такое, как в инструменте Postman.

enter image description here

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://apiurl");
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Headers.Add("Authorization", "Bearer " + token);
            httpWebRequest.Method = "POST";
            httpWebRequest.UserAgent = ".Net application";

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                 string json = JsonConvert.SerializeObject(obj);//obj is parameter

                 streamWriter.Write(json);
            }

            try
            {
                HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var result = streamReader.ReadToEnd();
                }
            }
            catch (WebException e)
            {

            }

Могу ли я узнать, почему я получаю ошибки не так, как почтальон и C# код

С уважением, Ананд

1 Ответ

0 голосов
/ 08 мая 2020

Добавлен код ниже в блоке исключения, и он дал мне тот же ответ, что и Postman

        catch(WebException ex)
        {
            string message = ex.Message;
            WebResponse errorResponse = ex.Response;
            if (errorResponse != null)
            {
                using (Stream responseStream = errorResponse.GetResponseStream())
                {
                    StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
                    message = reader.ReadToEnd();
                }
            }
        }
...