Как сделать POST в командной строке Dart HttpClient

Я пытаюсь собрать клиент командной строки Dart, способный выполнять http POST. Я знаю, что я не могу использовать библиотеку dart: html и должен использовать dart: io

Начало кажется простым:

HttpClient client = new HttpClient();
client.getUrl(Uri.parse("http://my.host.com:8080/article"));

Вопрос в том, каков правильный синтаксис и последовательность, чтобы сделать это HttpClient сделать POST и чтобы иметь возможность передать JSON-кодированную строку в этот пост?

2 ответа

Решение

Используйте пакет http и dart:convert

import 'package:http/http.dart' as http;
import 'dart:convert';

void main() {


  var url = 'http://httpbin.org/post';
  http.post(url, body: JSON.encode({'test': 'value'})).then((response) {
    print("Response status: ${response.statusCode}");
    print("Response body: ${response.body}");
  });
}

Для добавления пользовательских заголовков, обработки ошибок и т. Д. См. https://www.dartlang.org/dart-by-example/.

Я бы хотел порекомендовать вам пакет dio, dio - мощный Http-клиент для Dart/Flutter, который поддерживает перехватчики, FormData, отмену запросов, загрузку файлов, тайм-аут и т. Д.

DIO очень прост в использовании:

Выполнение запроса Get:

response=await dio.get(url)

Выполнение запроса POST:

response=await dio.post(url,data:{"id":12,"name":"wendu"})

Отправка FormData:

FormData formData = new FormData.from({
   "name": "wendux",
   "file1": new UploadFileInfo(new File("./upload.pdf"), "upload1.pdf")
});
response = await dio.post("/info", data: formData)

Скачивание файла:

response=await dio.download("https://www.google.com/","./xx.html") 

Более подробную информацию можно найти на Github: https://github.com/flutterchina/dio.

Другие вопросы по тегам