cannot convert from 'System.Threading.Tasks.Task<string>' to 'string'

8.4k views Asked by At

I am fetching data from API and trying to convert it into deserialized form. But gettting this error.

public static async Task<List<Movie>> GetAllMovies(int pageNumber, int pageSize)
        {
            var httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", Preferences.Get("accessToken", string.Empty));
            var response = httpClient.GetStringAsync(AppSettings.ApiUrl + String.Format("api/movies/AllMovies?sort=asc&pageNumber={0}&pageSize={1}",pageNumber,pageSize));
            return JsonConvert.DeserializeObject<List<Movie>>(response);

        }
2

There are 2 answers

0
Peter Trencansky On BEST ANSWER

Use await before response

  return JsonConvert.DeserializeObject<List<Movie>>(await response)
0
Meysam Asadi On

Change your method to :

public static async Task<List<Movie>> GetAllMovies(int pageNumber, int pageSize)
{
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", Preferences.Get("accessToken", string.Empty));
    var result = httpClient.GetStringAsync(AppSettings.ApiUrl + String.Format("api/movies/AllMovies?sort=asc&pageNumber={0}&pageSize={1}",pageNumber,pageSize));
    var response = await result.Content.ReadAsStringAsync();
    return JsonConvert.DeserializeObject<List<Movie>>(response);
}