|
Модераторы: feodorv |
|
rudolfninja |
|
|||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
Ребята, приветствую.
Т.к. в теме сетевого программирования не совсем силен, то вопросы могут показаться глупыми. В общем, проблема такая: мне надо из приложения отправлять post запрос на www.kinopoisk.ru с названием фильма, информацию о котором мне надо найти. А в ответ получить картинку фильма, год выпуска, режиссера, актеров и жанр. Собственно, в чем пока что вопросы: 1) Как сформулировать этот запрос? Куда именно подставлять название фильма? 2) На кинопоиске если ввести название фильма (например Психо), то он покажет целый список результатов. Как в этом случае получить фильм, который первый в списке? Спасибо. |
|||
|
||||
volatile |
|
||||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
Вообще это чистый конечно
Но я чуток в теме, поэтому отвечу (а модераторы пусть переносят ) там не нужен POST, сойдет обычный GET
Ну собстенно, вышеприведенный запрос так и делает. Это сообщение отредактировал(а) volatile - 6.12.2015, 12:56 |
||||||
|
|||||||
rudolfninja |
|
||||||||||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
Если отправить такой запрос, то вы итоге зависаю на получении ответа. Если без слова "GET", то получаю вот такой ответ:
Переделал запрос так:
Потом отправляю его:
В итоге такой ответ:
Это сообщение отредактировал(а) rudolfninja - 6.12.2015, 13:08 |
||||||||||
|
|||||||||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
rudolfninja, GET запрос, это просто ссылка Вот она Открывается у вас в браузере? Если да, то тогда в чем проблема? Ваша программа может открывать ссылки?? |
|||
|
||||
rudolfninja |
|
|||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
||||
|
||||
feodorv |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Интересно, какое именно имя хоста Вы туда отправляете -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
volatile |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
ну там же не так, а как-то так
|
||||
|
|||||
rudolfninja |
|
|||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
||||
|
||||
feodorv |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
rudolfninja |
|
|||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
|
|||
|
||||
feodorv |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Значит, на сайте стоит какая-то защита. Стер все свои куки. Браузер отправил такой запрос:
Получил такой ответ:
Далее шла загэзипленная страница. Сильное подозрение, что сайт работает только с зазипованным html текстом. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
rudolfninja |
|
||||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
То есть, в ответе было содержимое этой страницы, которое можно как-то преобразовать в нормальный вид? Сделал такой запрос:
В итоге повисаю на функции
Может ли это быть потому, что данные слишком большие? UPD: Нашел в чем проблема была. Проблема была в том, что в конце HTTP запроса надо было вставить пустую строку. Теперь ответ нормально выводится на экран (или в файл) только если я под отладчиком прохожу все итерации цикла приема сообщений. Без отладчика ничего не выводится (ни на экран, ни в файл). Как быть в этом случае? Создавать отдельный поток? И еще вопрос, что храниться в этом gzip сообщении и как его расшифровать? Это сообщение отредактировал(а) rudolfninja - 6.12.2015, 23:14 |
||||
|
|||||
rudolfninja |
|
|||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
feodorv, а не подскажете еще, какими средствами вы узнали, что запрос будет именно такой?
|
|||
|
||||
feodorv |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Лучше сократить Referer до "http://www.kinopoisk.ru/" и попробовать сделать Connection "close" (с этим сайтом может и не сработать). Его надо распаковать, например, с помощью библиотеки zlib. Вообще, Вам нужен анализ принятых заголовков:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
rudolfninja |
|
|||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
||||
|
||||
feodorv |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Хотелось бы весь код, работающий с сокетом -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
rudolfninja |
|
||||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
Вот код отправки и получения данных. Еще заметил такую странность, что сегодня такой запрос не работает =) После
В arg 0. Повторяется не стабильно. Где-то через раз. Это сообщение отредактировал(а) rudolfninja - 7.12.2015, 18:57 |
||||
|
|||||
feodorv |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Поверхностный осмотр кода привел к таким выводам:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
rudolfninja |
|
|||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
feodorv, спасибо, вроде работает.
Гляньте, пожалуйста, код на наличие ошибок\недочетов.
|
|||
|
||||
feodorv |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Это сообщение отредактировал(а) feodorv - 8.12.2015, 09:30 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
feodorv |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
Если грузится библиотека WinSock второй версии, то от проверок EINTR можно отказаться.
Если таймаут не важен (но при этом сервер заставляем закрывать соединение), то всё ещё проще (можно и от select() отказаться):
Добавлено через 14 минут и 15 секунд А как Вы будете высвобождать память, выделенную под buff, если после возникнет исключение? Вообще, здесь смысла в выделении памяти мало, можно же просто
Это сообщение отредактировал(а) feodorv - 8.12.2015, 09:30 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
rudolfninja |
|
|||
Опытный Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: нет Всего: 6 |
Спасибо за замечания. Исправлю.
Помечаю тему как решенную. |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |