Проверка ответа 200 на запрос HTTP POST - PullRequest
1 голос
/ 12 апреля 2020

HttpErrorResponse равен 200, но сообщение «sucess» никогда не печатается. Вместо этого это отображается в консоли:

HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "http://localhost:5000/api/File/create", ok: false, …}
this.http.post('api/File/create', waldo, { observe: 'response' }).subscribe(data => {
    if (data.status == 200) {
        console.log("success");
    }
});

Обновление: enter image description here

Обновление2:

 [HttpPost("create")]
        public ActionResult<File> Create([FromBody]File file)
        {
            try
            {
                _fileService.Create(file);
                return Ok("sucess");
            }
            catch(Exception e)
            {
                return NotFound();
            }



        }

Ответы [ 2 ]

3 голосов
/ 12 апреля 2020

Я думаю, это потому, что ваш API создания не возвращает json.

Попробуйте указать responseType в параметрах запроса, чтобы angular не пытался проанализировать содержимое ответа как json объект:

this.http.post('api/File/create', waldo, { observe: 'response', responseType: 'text' })
1 голос
/ 12 апреля 2020

Сторона Angular ожидает по умолчанию ответа JSON. Конечная точка не отвечает на объект JSON, она отвечает на простой текст. Сторона Angular пытается проанализировать простой текст как JSON, но не может этого сделать, поэтому выдается ошибка.

Существует 2 способа решения этой проблемы:

На стороне сервера должно быть возвращено JSON , как здесь ответили .

Или клиент http на стороне Angular должен быть настроен на ожидание простого текста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...