Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 3

IdHTTP POST запрос. Как получить содержимое ответа переданное в окно?

19.08.2014, 12:49. Показов 4314. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Посылаю post на авторизацию, возвращается заглавная страница с подтверждением. Все ок.
Далее посылаю get и обрабатываю их ответы. Все ок. Проблем нет.

Теперь нужно послать post на выполнение команды сервером. Сервер выполняет команду (работает с оборудованием) и возвращает определенные данные (например: "время работы принтера 12 часов"). Когда я делаю запрос с помощью браузера (например мозила), он посылает еще и гет запрос который возвращает "пожалуйста подождите...". А пост запрос возвращает "время работы принтера 12 часов" в новом окошке с кнопкой ОК (как бы поверх сайта). Это так себя ведет браузер.
Посылаю тот же запрос через инди:
IdHTTP1->Post(Url,PostData,get_len) возвращает в get_len(это TStringStream) содержимое заглавной страницы, как и при авторизации.
IdHTTP1->ResponseText возвращает "HTTP/1.1 200 OK".
И никакой информации о работе принтера! Как мне ее получить? Помогите пожалуйста.

При запросе в мозиле, в HttpAnalyzerStdV7 у пост запроса на вкладке "Response Content" нужная мне инфа о работе принтера, а у гет "пожалуйста подождите...". Но при запросе через инди и у гет и у пост на вкладке "Response Content" заглавная страница с успешной авторизацией. Что же я посылаю не так? Всю инфу из HttpAnalyzerStdV7 вставлял в инди и редиректа страницу тоже. При этом ответ в мозилу в Raw Stream такой же HTTP/1.1 200 OK + другая инфа и в конце инфа о работе принтера, а через инди в конце заглавная страница.

Добавлено через 17 минут
единственное отличие которое сейчас заметил в HttpAnalyze, в мозиле при запросе стоит:
X-Requested-With: XMLHttpRequest (такого в инди не нашел)
Connection: keep-alive (но в инди в свойствах то же самое пишу)

а при ответе через мозилу:
Connection: keep-alive

а через инди почему то:
Connection: close

не смотря на код: IdHTTP1->Request->Connection = "keep-alive";

я не пойму что это значит
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2014, 12:49
Ответы с готовыми решениями:

POST запрос - Как получить текст ответа в случае неудачи?
Провожу пост-запрос. Он может быть выполнен удачно (допустим, в этом случае в систему добавляются какие-либо данные), либо неудачно -...

Как сохранить cookies из ответа на POST-запрос?
### httpPost def httpPost(url, _params): bot = atape_http_client() print u'Найдены параметры\n' a = bot.httpPost(url, _params) ...

Как отправить POST запрос на сервер без обработки ответа?
Здравствуйте! Никак не могу найти простой способ отправить POST запрос на сервер, обрабатывать ответ не нужно. Пример запроса:...

4
12 / 12 / 9
Регистрация: 12.04.2012
Сообщений: 259
20.08.2014, 11:21
Напишите сайт на который посылаете запросы, попробую разобраться!
0
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 3
20.08.2014, 14:07  [ТС]
К сожалению не смогу предоставить сайт. Это корпоративный рабочий сайт, доступ к нему ограничен.
Вообще я предполагаю, что все же виной всему keep-alive который судя по всему не работает в Indy10 в Builder-е.
Как мне кажется запрос отправляется но сервер не успевает отправить ответ, потому что ему нужно время (пара секунд) что бы что то сделать с оборудованием, а только потом он посылает ответ.
Я начал копать в сторону winapi, попробую сделать запрос с его помощью. Хотя конечно же вся программа написана под Indy. Не могу пока что понять как делать запросы через HttpAnalyzer , на любой запрос пишет UnknownError.
Может что то посоветуете чем лучше делать запросы (тестить)?

Вся прога уже сделана, осталось только вот последний штрих, но очень важный штрих) что то прям застрял на нем)
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.08.2014, 14:43
Цитата Сообщение от aleksqqq Посмотреть сообщение
чем лучше делать запросы
HttpAnalyzer7 достаточно что бы сравнить запросы которые шлет браузер и которые шлет ваша программа, и исправить несоответствия и ошибки.

Добавлено через 2 минуты
Цитата Сообщение от aleksqqq Посмотреть сообщение
что все же виной всему keep-alive который судя по всему не работает в Indy10 в Builder-е.
Цитата Сообщение от aleksqqq Посмотреть сообщение
Я начал копать в сторону winapi, попробую сделать запрос с его помощью.
Сомнительно.
0
0 / 0 / 0
Регистрация: 19.08.2014
Сообщений: 3
20.08.2014, 15:37  [ТС]
HttpAnalyzer7 я как раз сравнивал запросы, если вы читали первый пост там было видно что разница в keep-alive который не может послать моя программа и в X-Requested-With.

Итак. Проблема решена. Ура!
Прикрутил расширение к браузеру для отправки пост запросов. Попробовал и так и сяк. Оказалось проблема не в keep-alive, а в этом самом X-Requested-With: XMLHttpRequest.
Добавил к запросу: IdHTTP1->Request->CustomHeaders->Add("X-Requested-With:XMLHttpRequest");
(не знал что так можно =).

X-Requested-With: XMLHttpRequest означает что будет использоваться Ajax. Какая то технология "заключающаяся в «фоновом» обмене данными браузера с веб-сервером. В результате, при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся быстрее и удобнее." (с)Wikipedia
Видимо отсюда и окно в браузере.

Всем спасибо за внимание, программа готова. Можно расходиться по домам.

PS. сто лет не был на форуме)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2014, 15:37
Помогаю со студенческими работами здесь

IdHTTP (POST запрос)
Здравствуйте,есть такой вопрос,при отправке POST запроса в ответ получаю ошибку HTTP/1.1 302 Found, это меня устраивает,вопрос состоит в...

Idhttp post запрос с текстом и картинкой
Всем привет :D Помогите пожалуйста сделать что то вроде комбинированного запроса, то есть с текстом и картинкой. Вот у меня есть как бы...

Не отправляется POST запрос idHTTP - что делаю не так?
Проблема в символах, например в символе & Я не знаю почему так все происходит, может кто сможет мне помочь Делфи 2009 у меня ...

Как получить изображение из ответа на запрос HttpWebRequest?
Всё, казалось бы, просто и понятно. Я получаю картинку (капчу) с ответом на запрос. Dim request As HttpWebRequest =...

Получение ответа на POST запрос
Привет ребят. Чет совсем завис. Отправляю Post запрос. public string http_post(string url, string filepath) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru