Snehit Sah
Snehit Sah

Reputation: 53

http.get returns 404 "Route not found"

I am trying to use a public API to search movie titles via my Flutter/Dart app.

A minimal code snippet is this

static Future<AnimeSearchResult> fetchSearchResults(String searchTerm) async {
    final response = await http.get(
        Uri.https("kitsu.io", "/api/edge/anime?filter[text]=cowboy%20bebop"));
    // https://kitsu.io/api/edge/anime?filter[text]=cowboy%20bebop

    if (response.statusCode == 200) {
      // If the server did return a 200 OK response,
      // then parse the JSON.
      return animeSearchResultsFromMap(response.body);
    } else {
      // If the server did not return a 200 OK response,
      // then throw an exception.
      print(response.body);
      throw Exception('Failed to load search results');
    }
  }

This will search and return an object back to a FutureBuilder Widget which then displays the results. (I have tested the UI and it is working on sample data)

Running the code, I get 404 error in my console

{"errors":[{"status":404,"title":"Route Not Found"}]}

Opening the link in my browser, it gives a JSON file as its supposed to do.

Trying to access the trending collection link using final response = await http.get(Uri.https("kitsu.io", "/api/edge/trending/anime")); also works perfectly fine. So I am suspecting there is some error in the way my URI is written for the search code. Precisely speaking, this line is at fault

final response = await http.get(Uri.https("kitsu.io", "/api/edge/anime?filter[text]=cowboy%20bebop"));

However I don't know what exactly is the problem.

Any help is appreciated! Thank You!

Upvotes: 1

Views: 583

Answers (1)

Huthaifa Muayyad
Huthaifa Muayyad

Reputation: 12353

I tried it this way, and it worked:

 final response = await http.get(Uri.parse("https://kitsu.io/api/edge/anime?filter[text]=cowboy%20bebop"));

enter image description here

But await http.get(Uri.https resulted in the same error you are having.

Upvotes: 2

Related Questions