Добавление заголовка авторизации в код флаттера возвращает ответ об ошибке, тогда как тот же запрос отлично работает в почтальоне.
У меня странная ошибка при флаттере, когда просто добавление заголовка авторизации позволяет мне получить ошибку.
Текущая проблема, с которой я столкнулся,
postData(data, apiUrl) async {
var fullUrl = _url + apiUrl;
var at = await _accessToken;
print('access token is $at');
return await http.post(
Uri.parse(fullUrl),
body: jsonEncode(data),
encoding: Encoding.getByName("utf-8"),
headers: {
'Authorization': 'Bearer $at', <---------------- Adding this line of code prints an error in the console
'Content-Type': 'application/json',
'Accept': 'application/json'
},
);
В моем коде, если я добавлю
Authorization
заголовок, на который я указываю стрелкой в приведенном выше коде, я получаю сообщение об ошибке на консоли, в котором говорится:
D / libc-netbsd (32217): [getaddrinfo]: mtk hostname = host_name_i_provided; servname = (ноль); cache_mode = (ноль), netid = 0; отметка = 0; app_uid = 10217; ai_addrlen = 0; ai_canonname = (ноль); ai_flags = 1024; ai_family=0 D / libc-netbsd(32217):getaddrinfo: host_name_i_provided получить результат от прокси >>E / flutter (32217): [ОШИБКА: flutter / lib / ui / ui_dart_state.cc (199)] Необработанное исключение: FormatException: Unexpected символ (в строке 3, символ 1) E / flutter (32217): E / flutter (32217): ^E / flutter (32217): E / flutter (32217): #0 _ChunkedJsonParser.fail (dart: convert-patch / convert_patch.dart:1404:5) E / flutter (32217): # 1
_ChunkedJsonParser.parseNumber (dart:convert-patch / convert_patch.dart: 1271: 9) E / flutter (32217): # 2
_ChunkedJsonParser.parse (dart:convert-patch / convert_patch.dart:936:22) E / flutter (32217): #3
_parseJson (dart:convert-patch / convert_patch.dart:40:10) E / flutter (32217): #4 JsonDecoder.convert (dart:convert / json.dart:506:36)E / flutter (32217): #5 JsonCodec.decode (dart: convert / json.dart:157:41) E / flutter (32217): #6
_RescueMeFormPageState.submitData (package: redcross / Pages / Disaster / rescue_me_form_page.dart:57: 21) E / flutter (32217 ): E / флаттер (32217):
Но если я удалю этот заголовок, я получу следующий действительный ответ:
I / flutter (32217): {статус: 400, данные: {code: TokenException, сообщение: токен авторизации не найден}}
Я не могу понять, почему я получаю эту ошибку.
Я хотел бы отметить еще несколько моментов:
$at
переменная содержит правильный токен доступа. Я проверил это, добавив операторы печати. Итак, строка кода
'Authorization': 'Bearer $at',
является действительным.
Также, если я сделаю тот же запрос от почтальона, я получу правильный ответ.
Может ли кто-нибудь помочь мне найти решение этой ошибки. Спасибо.....
1 ответ
Проблема не в токене, а в разборе JSON, проверьте код, в котором вы разбираете ответ.