C # Состояние после запроса 400 Неправильный запрос - PullRequest
0 голосов
/ 17 декабря 2018

В настоящее время я работаю над программой на C #, которая должна получать данные от API REST, который я размещаю.

API требует токен для аутентификации, который возвращается из запроса POST.

Когда я пытаюсь выполнить POST с C #, я получаю неверный запрос (Status 400), но запрос GET работает нормально.Теперь мой вопрос: что я сделал не так или что может быть причиной этой ошибки?При выполнении запроса с почтальоном оба работают отлично.

Функция POST:

void POST(string url, string jsonContent) {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "POST";

        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
        Byte[] byteArray = encoding.GetBytes(jsonContent);

        request.ContentLength = byteArray.Length;
        request.ContentType = @"application/json";

        using (Stream dataStream = request.GetRequestStream()) {
            dataStream.Write(byteArray, 0, byteArray.Length);
        }
        long length = 0;
        try {
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
                length = response.ContentLength;
                Console.WriteLine(response);
            }
        } catch (WebException ex) {
            Console.WriteLine(ex);
        }
    }

Функция GET:

string GET(string url) {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        try {
            WebResponse response = request.GetResponse();
            using (Stream responseStream = response.GetResponseStream()) {
                StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.UTF8);
                return reader.ReadToEnd();
            }
        } catch (WebException ex) {
            WebResponse errorResponse = ex.Response;
            using (Stream responseStream = errorResponse.GetResponseStream()) {
                StreamReader reader = new StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8"));
                String errorText = reader.ReadToEnd();
                // log errorText
            }
            throw;
        }
    }
...