#flutter #api #http #dart #post
Вопрос:
Я пытался отправить запрос post в конечную точку, для которой требуется закодировать как заголовок, так и тело запроса, однако до сих пор ответы, которые я получал, содержали 400 ошибок. До сих пор я получал запрос только с помощью запроса curl и клиента Thunder в VSCode. Ниже приведен текст моего запроса. Любая помощь была бы признательна, спасибо.
С помощью http-пакета flutter:
Response response = await post( Uri.parse(URL), headers: { 'Authorization': 'Basic ${base64Encode(utf8.encode('$ID:$SECRET'))}', 'Content-Type': 'application/x-www-form-urlencoded', }, encoding: Encoding.getByName('utf-8'), body: { 'grant_type': 'refresh_token', 'refresh_token': refreshToken, 'redirect_uri': redirectUri, } );
Ошибка:
С пакетом flutter Dio:
Dio.Dio dio = Dio.Dio(); Dio.Response response = await dio.post( URL, data: { 'grant_type': 'refresh_token', 'refresh_token': refreshToken, 'redirect_uri': redirectUri, }, options: Dio.Options(contentType: Dio.Headers.formUrlEncodedContentType, headers: lt;String, Stringgt;{'Authorization': 'Basic ${base64Encode(utf8.encode('$ID:$SECRET'))}'}));
Ошибка:
Комментарии:
1. Вы пробовали просто предоставлять
body: 'grant_type=refresh_tokenamp;refresh_token=$refreshTokenamp;redirect_uri=$redirectUri'
? Afaik это то, что ожидает x-www-форма-urlencoded2. все еще получаю то же самое сообщение об ошибке 400
Ответ №1:
По мере того, как вы получаете ответ с сервера 400, api попадает на сервер. Попробуйте выполнить отладку с бэкенда, чтобы узнать точное использование в деталях.