Существует пакет dart, который предоставляет некоторые вспомогательные классы для запросов http.
Github: https://github.com/Ephenodrom/Dart-Basic-Utils Установите его с помощью:
dependencies:
basic_utils: ^1.3.0
Использование
Map<String, String> headers = {
"Accept": "application/json",
"key": "my-long-key"
};
Map<String, String> queryParameters = {
"citycode": Uri.encodeFull("25"),
"nodeId": Uri.encodeFull("123456789")
};
String URL = Uri.encodeFull("URL");
// If the api returns json
Map<String, dynamic> dataAsJson = await HttpUtils.getForJson(url,
headers: headers, queryParameters: queryParameters);
// if the api returns plain strings
String dataAsString = await HttpUtils.getForString(url,
headers: headers, queryParameters: queryParameters);
// if the api returns something else like XML, EPP, KV, YAML
Response fullResponse = await HttpUtils.getForFullResponse(url,
headers: headers, queryParameters: queryParameters);
Используйте Uri.encodeFull для данных параметров запроса.
Дополнительная информация:
Это все методы из класса HttpUtils.
Future<Map<Response> getForFullResponse(String url,{Map<String, dynamic> queryParameters,Map<String, String> headers});
Future<Map<String, dynamic>> getForJson(String url,{Map<String, dynamic> queryParameters,Map<String, String> headers});
Future<String> getForString(String url,{Map<String, dynamic> queryParameters,Map<String, String> headers});
Future<Map<Response> postForFullResponse(String url, String body,{Map<String, String> queryParameters,Map<String, String> headers});
Future<Map<String, dynamic>> postForJson(String url, String body,{Map<String, String> queryParameters,Map<String, String> headers});
Future<String> postForString(String url, String body,{Map<String, String> queryParameters,Map<String, String> headers});
Future<Response> putForFullResponse(String url, String body,{Map<String, String> queryParameters,Map<String, String> headers});
Future<Map<String, dynamic>> putForJson(String url, String body,{Map<String, String> queryParameters,Map<String, String> headers});
Future<String> putForString(String url, String body,{Map<String, String> queryParameters,Map<String, String> headers});
Future<Response deleteForFullResponse(String url,{Map<String, String> queryParameters,Map<String, String> headers});
Future<Map<String, dynamic>> deleteForJson(String url,{Map<String, String> queryParameters,Map<String, String> headers});
Future<String> deleteForString(String url,{Map<String, String> queryParameters,Map<String, String> headers});
Map<String, dynamic> getQueryParameterFromUrl(String url);
String addQueryParameterToUrl(String url, Map<String, dynamic> queryParameters);