Iustin Alex
Iustin Alex

Reputation: 31

Return response body from HttpClient request

Here is my code:

  Future<String> fetch(url) async {
    Directory tempDir = await getTemporaryDirectory();
    String tempPath = tempDir.path;
    var cj = new PersistCookieJar(tempPath);

    HttpClient client = new HttpClient();
    var request = await client.getUrl(Uri.parse(url));
    request.cookies.addAll(cj.loadForRequest(Uri.parse(url)));
    var response = await request.close();
    cj.saveFromResponse(Uri.parse(url), response.cookies);
        // I tried using .toString() but it returns an " Instance of '_HttpClientResponse' "
    return response.toString();
  }

I tried for hours to find a way to return the response body, but without any success, could someone please help me.

Upvotes: 0

Views: 108

Answers (1)

Iustin Alex
Iustin Alex

Reputation: 31

Never mind, I fixed it.

I used this code:

  Future<String> fetch(url) async {
    Directory tempDir = await getTemporaryDirectory();
    String tempPath = tempDir.path;
    var cj = new PersistCookieJar(tempPath);

    HttpClient client = new HttpClient();
    var request = await client.getUrl(Uri.parse(url));
    request.cookies.addAll(cj.loadForRequest(Uri.parse(url)));
    var response = await request.close();
    cj.saveFromResponse(Uri.parse(url), response.cookies);
    // I had to transform the response for it to work
    var body = await response.transform(Utf8Decoder(allowMalformed: true)).join();
    return body;
  }

Upvotes: 1

Related Questions