Перейти к содержанию

Клиент-серверное приложение Delphi. Работа с NMHTTP.


Рекомендуемые сообщения

Доброго времени суток!

Итак, прошу помощи :help: в реализации моей идеи. НЕ прошу писать за меня код, а просто посоветовать, как поступить и в какую сторону "копать")).

Есть нужда иметь программу, которая будет брать с определенного сайта определенную инфу - строки (команды) или редко текст. доки, и обрабатывать их и возможно отдавать обратно (или же просто информировать о "проделанной работе" простой строкой Ok). По пунктам, что "хочеться" сделать (не "пинайте" если не совсем четко сформулировано):

1. Запускаем прогу, она стучиться например на www.mydocsite.ru и говорит я on-line!!!

2. Передать скрипту на web-сервере кокой-нибудь свое уникальное имя. (чтоб я знал кто это)

3. Посылает запрос web-серверу на получение документа или команды.

4. Прием строки или документа

5. Обработка строки или дока.

6. Идем на пункт 1 и 2.

Не могу сообразить какой использовать компонент NMHTTP или IdHttpClient. C каким будет проще? В моей сети этих программ будет несколько штук (2-3 :diablo: )

Вопросы: Возможно ли реализовать такое? Если ДА, то каких компонентов не хватает (WinApi знаю не очень :no: )? Хотелось бы увидеть примеры-исходники работы с NMHTTP и IdHttpClient. Может чего упустил? Подскажите!)) Может кто-то делал подобное? Я мало писал приложений для сети((( *26

Добавлено спустя 27 минут 2 секунды:

Вот еще вопрос образовался:

Как с помощью NMHTTP отправить get запрос скрипту и получить "обработанный" ответ.

Ссылка на комментарий

Ну по поводу. Компонентов делфей и вообще делфи не знаю Но а так все работать должно как-то, так:

База всего приложения это проток HTTP.

То есть если посмотриш на верхнюю строку в браузере

http://ulanovka.ru/forum/viewtopic.php?t=314392&sid=000

это ссылка на настоящую тему.

Это тебе как пользователю достаточно ее куда то ввести.

Обращение по этой ссылке самим браузеро упрошенно выглядит так

GET /forum/viewtopic.php?t=314392&sid=000 HTTP/1.1
Host: ulanovka.ru
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:phpbb2mysql_data=????????; ....
Host:ulanovka.ru
Referer:http://ulanovka.ru/forum/viewforum.php?f=137&sid=000
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19
(пустая строка)

Ответ сервера:
HTTP/1.1 200 OK
Cache-Control:no-cache, pre-check=0, post-check=0
Connection:keep-alive
Content-Type:text/html
Date:Fri, 04 May 2012 12:08:22 GMT
Expires:0
Pragma:no-cache
Server:nginx/0.7.67
Set-Cookie:phpbb2mysql_data=&&&&&
Transfer-Encoding:chunked
(Пустая строка)

страница

Но суть в том что первое что должно делать твое приложение это вести HTTP - диалог

как ты это сделаешь не суть важно, можешьнайти компонент, или использовать сокеты.

2.

если вернемся к ссылке

http://ulanovka.ru/forum/viewtopic.php?t=314392&sid=000

На серве лежит скрипт viewtopic.php

ему можно передовать параметры,

он например воспринимает параметр t - который обозначает идентификатор темы, и sid - который обозначает идентфикатор твой сессии

Что бы просматривать темы мы и указываем t=314392, а например номер соседней темы t=314230

Вот чтобы как нибуть взаимодействовать с сервером тебе нужно знать его API. или если ты и сервер писать будеть то придумать его.

Например

www.mydocsite.ru/superPuperClient.php?tast=setMeOnline&my_ip=192.0.0.1&user=000123&pass=123 - например такая хня может подключать твой клиент, ты говориш подключи мой клиент мое уникальное имя 000123

www.mydocsite.ru/superPuperClient.php?task=getNewComand -например такая хня будет дай мне следующее сообщение

www.mydocsite.ru/superPuperClient.php?task=compliteComand&id=999&state=ok -например такая хня значит что клиент отлично выполнил команду номер 999

www.mydocsite.ru/superPuperClient.php?task=compliteComand&id=666&state=fail - а такая хня сообщит серверу что клиент не стал выполнять команду 666 ( он же не сатанист)

На эту всю фигню сервер должен уметь отвечать, опять же если готового нет то можно посмотреть в сторону XML и JSON. Полюбас на делфях если либы которые могут жрать ету хрень и возвращать добные структуры.

например при запросе

www.mydocsite.ru?superPuperClient.php?task=getNewComand

сервер может отвечать XML


<?xml version="1.0" encoding="UTF-8"?>

1
fuck yourself in the ass

или JSON

{id:1,action:"fuck yourself in the ass"}

а можешь просто посылать голый ответ


fuck yourself in the ass

Вот в принципе и все что тебе предстоит сделать.

Но имей ввиду такая реализация сетевго взаимодействия не совсем удатчно потому что. Пока клиент не послал запрос серверу от тупо дрыхнет и ему пофигу на клиентов которые подключились или же которые что нибуть выполняют. То есть тебе не удасться реализовать полного интерактива в сетевом взаимодействии..

Плюс он при каждом запросе клиента снова должен узнать или вспомнить что вообще происходит, кто его теребит да и вообще ВСЁ ( понимаешь HTTP сервера много спят и много бухают, поэтому они всегда у всех спрашивают ты кто чего хочешь) Вот такая лабуда.

Ну я думаю направление мыслей тебе дал. Так что удачного кодинга и успешных тестов.

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...