Обработка не-ок запросов в дротике
У меня есть этот простой фрагмент дротика:
import 'package:http/http.dart' as http;
Client _http = new BrowserClient();
final response = await _http
.post(url, headers: someHeader, body: someValue);
Сервер для текущего запроса, возвращает Bad Request 400
ответ. Я хочу иметь возможность получить код состояния по некоторым причинам. Но как только _http.post
мне звонят, я получаю эту ошибку:
POST http://localhost/path 400 (Bad Request)
Положить блок в try/catch
не помогает, так как ловится исключение ClientException
который не имеет информации о коде состояния и теле ответа (что важно здесь). Как я могу обрабатывать коды состояния здесь, без исключения?
ОБНОВИТЬ:
У меня есть этот фрагмент после _http.post()
вызов:
if (response.statusCode == 400) {
// manage bad request
}
Но response
является null
, Итак statusCode
здесь не доступно
ОБНОВЛЕНИЕ 2: я получаю запрос на сервере и могу отслеживать на сервере. Как я уже говорил, сервер отправляет 400 Bad Request
ответ и работает просто отлично. Но получение ответа в Dart вызывает ошибку.
2 ответа
Я подозреваю, что URL, заголовок или тело недействительно как-то. (например, недопустимые символы в заголовке). Запрос на самом деле не отправляется на сервер, и поэтому ClientException
бросается вместо того, чтобы дать вам ответ.
Response
объект имеет поле statusCode
где вы можете получить код состояния ответа. Вы можете сделать что-то подобное:
final response = await _http
.post(url, headers: someHeader, body: someValue);
if (response.statusCode == 400) {
// manage bad request
}