From ac482703039ce6d5348ccdd3d69de7010aa9ba80 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Thu, 25 Apr 2019 11:44:58 +0200 Subject: [PATCH] Use http package for requests --- lib/helpers/api_helper.dart | 31 +++++++------------------------ pubspec.lock | 14 ++++++++++++++ pubspec.yaml | 3 +++ 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/lib/helpers/api_helper.dart b/lib/helpers/api_helper.dart index c45814c..a1b015c 100644 --- a/lib/helpers/api_helper.dart +++ b/lib/helpers/api_helper.dart @@ -5,14 +5,13 @@ import 'package:comunic/helpers/account_credentials_helper.dart'; import 'package:comunic/models/api_request.dart'; import 'package:comunic/models/api_response.dart'; import 'package:comunic/models/config.dart'; +import 'package:http/http.dart' as http; /// API Helper /// /// @author Pierre HUBERT class APIHelper { - final _httpClient = HttpClient(); - /// Execute a [request] on the server and returns a [APIResponse] /// /// This method should never throw but the response code of the [APIResponse] @@ -31,16 +30,6 @@ class APIHelper { request.addString("userToken2", tokens.tokenTwo); } - // Prepare request body - String requestBody = ""; - request.args.forEach((key, value) => requestBody += - Uri.encodeQueryComponent(key) + - "=" + - Uri.encodeQueryComponent(value) + - "&"); - - List bodyBytes = utf8.encode(requestBody); - // Determine server URL final path = config().apiServerUri + request.uri; Uri url; @@ -49,22 +38,16 @@ class APIHelper { else url = Uri.https(config().apiServerName, path); - //Connect to server - final connection = await _httpClient.postUrl(url); - connection.headers.set("Content-Length", bodyBytes.length.toString()); - connection.headers - .set("Content-Type", "application/x-www-form-urlencoded"); - connection.add(bodyBytes); - - final response = await connection.close(); + final response = await http.post( + url.toString(), + body: request.args, + encoding: utf8 + ); if (response.statusCode != HttpStatus.ok) return APIResponse(response.statusCode, null); - //Save & return response - final responseBody = await response.transform(utf8.decoder).join(); - - return APIResponse(response.statusCode, responseBody); + return APIResponse(response.statusCode, utf8.decode(response.bodyBytes)); } on Exception catch (e) { print(e.toString()); print("Could not execute a request!"); diff --git a/pubspec.lock b/pubspec.lock index dd10036..a7f15b2 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -46,6 +46,20 @@ packages: description: flutter source: sdk version: "0.0.0" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.0+2" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.3" image_picker: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 640ab84..6bce70c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,6 +33,9 @@ dependencies: # Image picker is used whenever the user wants to send an image image_picker: ^0.5.4+3 + # The HTTP client is used to make requests on the Comunic API + http: ^0.12.0+2 + dev_dependencies: flutter_test: sdk: flutter