API поиска iTunes получает 0 результатов в программе на C#, но 1 результат в браузере Chrome

Я создал программу на C#, которая ищет детали фильма с названием фильма. Я создаю ссылку:

        string link = "https://itunes.apple.com/search?";

        link += "term=";

        string cTitle = Titel.Replace(" ", "+");
        link += cTitle;

        link += "&country=DE";
        link += "&media=movie";
        link += "&entity=movie";
        link += "&attribute=movieTerm";
        link += "&limit=1";

с названием фильма "Автобус 657" это будет следующая ссылка:

https://itunes.apple.com/search?term=Bus+657&country=DE&media=movie&entity=movie&attribute=movieTerm&limit=1

Если я открою эту ссылку, я получу текстовый файл с нужным мне результатом. Но если я получу это в C# со следующим кодом:

WebClient client = new WebClient();
var json = client.DownloadString(link);
Thread.Sleep(3100);

Я получаю 0 результатов. Может кто-нибудь помочь мне исправить это?

У меня есть много названий фильмов, название которых названо оригинальным названием iTunes в Германии.

Спасибо:)

2 ответа

Решение

Добавьте User Agent в заголовок запроса и попробуйте.

WebClient client = new WebClient();
client.Headers.Add("user-agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
var json = client.DownloadString(link);

я получил "resultCount":1

Ваша ссылка неверна.

У тебя есть:

                                        BZZZZT - should be %20
                                        ↓
https://itunes.apple.com/search?term=Bus+657&country=DE&media=movie&entity=movie&attribute=movieTerm&limit=1

Название вашего фильма "Автобус 657". Это пространство должно быть закодировано как %20 не +, Ваша ссылка должна быть:

https://itunes.apple.com/search?term=Bus%20657&country=DE&media=movie&entity=movie&attribute=movieTerm&limit=1

С исправленной ссылкой вы получите результаты. Вы должны использовать HttpServerUtility.UrlEncode или какая-либо другая функция, чтобы правильно URL кодировать ваш URL. Или создайте свой URL, используя UriBuilder учебный класс.

Другие вопросы по тегам