Верно, поэтому я работал над чем-то, что требует базовой аутентификации через заголовки и передачи некоторых переменных через HTTP Post. Это терминальное приложение.
Вот как выглядит мой код:
import 'package:http/http.dart' as http;
import 'dart:io';
void main() {
var url = "http://httpbin.org/post";
var client = new http.Client();
var request = new http.Request('POST', Uri.parse(url));
var body = {'content':'this is a test', 'email':'[email protected]', 'number':'441276300056'};
request.headers[HttpHeaders.CONTENT_TYPE] = 'application/json; charset=utf-8';
request.headers[HttpHeaders.AUTHORIZATION] = 'Basic 021215421fbe4b0d27f:e74b71bbce';
request.body = body;
var future = client.send(request).then((response) => response.stream.bytesToString().then((value) => print(value.toString()))).catchError((error) => print(error.toString()));
}
Я использую httpbin в качестве эхо-сервера, поэтому он сообщает мне, что я передаю. Мой код работает правильно, если я не передаю тело или если я передаю строку в качестве тела.
Очевидно, это потому, что атрибут body в http.Request принимает только строки, и я пытаюсь передать ему карту.
Я мог бы преобразовать это в строку, и это, вероятно, сработало бы, но я все же думаю, что мой код можно улучшить. Не с точки зрения синтаксиса или того, как он справляется с будущим, но я не уверен, что использование http.dart является правильным решением.
Может ли кто-нибудь указать мне правильное направление?
Заранее спасибо.