@Urope

Как вызвать метод на блейзор клиенте?

Логика такая: есть сервис, который делает следующее: делает запрос к апи, получает информацию и записывает в свойства. Затем эти свойства вызываются на клиенте.

Сам сервис:

public class TmdbService
    {
        private static JsonConfig _config = new JsonConfig();
        private readonly TMDbClient _client = new TMDbClient(_config.Settings.TApiKey);
    
        public async Task GetAllMovieInfo(string title, string lang = "ru")
        {
            SearchContainer<SearchMovie> results = await _client.SearchMovieAsync(title, lang);
            var movieData = results.Results.Take(1);
            foreach(var data in movieData)
            {
                new MovieDataDetail
                {
                   Id = data.Id,
                   Title = data.Title,
                   OriginalTitle = data.OriginalTitle,
                   ReleaseDate = data.ReleaseDate,
                   Image = data.PosterPath,
                   Popularity = data.Popularity,
                   Overview = data.Overview
                } 
            }
        }
    }


А вот клиент, на котором я все это вызываю:

@page "/counter"
    @using MovieApp.Shared.Services.TmdbApi
    @using MovieApp.Shared.Models.MovieData
    
    <div>
        <h1>The name of the movie: @detail.OriginalTitle</h1>
        <h1>The overview of the @title: @detail.Overview</h1>
        @*<h1>Ratings: @detail.IMDbRating</h1>*@
    </div>
    
    @code {
        TmdbService service;
        MovieDataDetail detail;
        string title = "lucy";
    
        protected override Task OnInitializedAsync()
        {
            detail = new MovieDataDetail();
            service = new TmdbService();
            return service.GetAllMovieInfo(title);
        }
    }

Сервис работает, я проверял на обычном консольном приложении.
Метод OnInitializedAsync() срабатывает во время первой загрузки страницы, по идее все должно работать, студия не ругается, но в консоли браузера, я получаю:
5ffed43b806b4341488983.png
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
Ошибка говорит, что HttpClient в блазоре не поддерживает Proxy
А в коде вашей либы есть такой код
public RestClient(Uri baseUrl, JsonSerializer serializer, IWebProxy proxy = null)
        {
            BaseUrl = baseUrl;
            Serializer = serializer;
            DefaultQueryString = new List<KeyValuePair<string, string>>();

            MaxRetryCount = 0;
            Proxy = proxy;

            HttpClient = new HttpClient(new HttpClientHandler
            {
                Proxy = proxy // Вот из-за этой строчки происходит падение.
            });
        }


Есть три варианта решения:
1. Сделать форк либы и поправить эту строку.
Но не факт, что это единственная строчка, которая вызывает несовместимые API
2. Вызывать этот код на сервере, а клиенту передавать только данные.
3. Написать собственный клиент для imdb
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы