Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.13;
Скачать: CL | DM;

Вниз

SOAP   Найти похожие ветки 

 
Juri   (2008-04-11 15:20) [0]

Приветствыую Знатоков очень прошу помочь долго очень ищу решение данной роблемы.
если по порядку то:
1 создал WebService
2 к нему интрефейс и имплементацию интерфейса
вот в имвлементации мне нужно в одной из функций узнать каков IP клиента который выполняет данную функцию

дело в том что HTTPrequest уже там не доступен но я не могу поверить что нет возможности узнать IP клиента приславшего запрос на выполнение данной функции


 
Плохиш ©   (2008-04-11 16:28) [1]

Открываешь pas-файл, котором Delphi создала наследника TWebModule и создаёшь ему обработчик OnBeforeDispatch, туда передаётся TWebRequest.


 
Juri   (2008-04-11 17:16) [2]

и что дальше то это я прекрасно панимаю но как мне получить этот самый TWebRequest в function выполнение который запросил данный клиент? именно в этой функции мне нужен его IP


 
Плохиш ©   (2008-04-11 17:26) [3]


> Juri   (11.04.08 17:16) [2]
> и что дальше то это я прекрасно панимаю

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


 
Juri   (2008-04-11 17:35) [4]

я может от целого рабочего дня уже не соображаю но я не панимаю
смотрите я беру из TWebRequest IP сохраняю в переменную какую либо после чего идёт выполнение функции которую запросил выполнить клиент
в это время происходит конект от другого клиента который хочет выполнить ту же функцию я снова сохраняю уже IP нового клиента и? теперь в той переменной другой IP и тот первый клиент уже не при делах получается.... или к примеру сразу 10 конектов от каждого пусть сохраним IP куда то в Array но как потом понять где чей???


 
Плохиш ©   (2008-04-11 20:26) [5]

[3] можно использовать для cgi-приложений, т.к. там для каждого запроса запускается отдельный экземпляр веб-сервиса.

А в общем случае, подключаешь модуль WebBrokerSoap и с помощью функции GetSOAPWebModule получаешь веб-модуль ответственный за запрос.

Используешь, как-то так

 clientIP := (GetSOAPWebModule as TWebModule1).Request.RemoteAddr;

Попробуй, потом отпишешь, что получилось.

http://www.agnisoft.com/white_papers/advancedws/default.asp


 
Juri   (2008-04-14 15:34) [6]

Спасибо большое всё получилось


 
Juri   (2008-04-29 12:20) [7]

ещё раз спасибо за то что помогли в прошлый раз, но у меня появилась ещё одна проблемка. А именно SSL скомпилировал апаче модуль всё отлично работает по HTTP:// но стоит только попробовать по HTTPS:// получаю ошибку если перевести с немецкого что то вроде: "Служба сертификации недейстыительна или ошибочна". тут я даже не пойму в чём проблема так как в Helpe стоит что HTTPRIO поддерживает протокол HTTPS:// значит работать вс должно и если к примеру через файрфокс открыть страницу модуля что браузер сообщает что сертификат устарел и спрашивает действительно ли я хочу открыть данную страницу. отсюда я сделал вывод что HTTPRIO видимо проверяя сертификат выдаёт ошибку а том что он не действителен. Это конечно хорошо, но было бы лучше если бы после проверки спросив как файофокс хочу ли я дальше работать было бы возможным использовать мой сервис и с просроченным сертификатом.
Хотя возможно что я сделал ошибочные выводы, если это так прошу подсказать.
А если всё таки проблема в сертификате и никак не реализовать работу с просроченными сертификатами, подскажите как создать тестовый сертификат?


 
Плохиш ©   (2008-04-29 13:36) [8]


> Juri   (29.04.08 12:20) [7]

Это всё в настройках апача надо делать, приложение здесь не при чём.


 
Juri   (2008-04-29 13:47) [9]

ещё не пойму как заставить SOAP компонениы испльзовать Indy?


 
Juri   (2008-04-29 13:49) [10]


> Это всё в настройках апача надо делать, приложение здесь
> не при чём.

но браузеры же могут открывать страницу модуля если подтвердить что хочешь открыть страницу не смотря на то что сертификат устарел?


 
Плохиш ©   (2008-04-29 15:43) [11]


> Juri   (29.04.08 13:47) [9]
> ещё не пойму как заставить SOAP компонениы испльзовать Indy?

Зачем?

> Juri   (29.04.08 13:49) [10]
> но браузеры же могут открывать страницу модуля если подтвердить
> что хочешь открыть страницу не смотря на то что сертификат
> устарел?

И?
Веб-сервер, по запросу через защищённое соединение отправляет данные и сертификат. Браузер получает это, проверяет сертификат, если он просрочен выдаёт сообщение и при согласии пользователя, показывает данные. Никакого отношения всё это к тому, кто подготовил данные на стороне веб-сервера, не имеет.
Настраивай апач, вроде у них тулз какой-то был для генерации сертификатов.


 
Juri   (2008-04-29 15:54) [12]

я скачал Openssl.exe для генерации сертификатов сделал приватный сертификат теперь браузеры говорят что сертификат приватный и не проверен официально... но мой клиент по прежнему выдаёт ошибку "Служба сертификации недейстыительна или ошибочна"... продебагил клиента своего ошибка приходит из wininet.dll значит всё таки это сервер... вариант с покупкой рального сертификата меня не устраивает... незнаю что и делать... всё таки хотелось бы чтоб клиент наплевав на недействительность сертификата работал с модулем...


> > Juri   (29.04.08 13:47) [9] > ещё не пойму как заставить
> SOAP компонениы испльзовать Indy?Зачем?


увидел в Helpe что SOAP может использовать Indy а там есть IdSSLIOHandlerSocket в котором как я панимаю как раз можно осуществить работу даже с просроченым сертификатом


 
Juri   (2008-04-30 13:38) [13]

неужели невозможно чтоб HTTPRIO через https протокол работал даже с просроченым сертификатом


 
Juri   (2008-05-09 18:14) [14]

я нашёл всё таки... оказывается по умолчанию уже стоит такая настройка у компоненты это HTTPRIO.HTTPWebNode.InvokeOptions
там стоит как я сказал по умолчанию soIgnoreInvalidCerts:=true;
но несмотря на это я получаю ошибку "Служба сертификации недейстыительна или ошибочна"...
Очень прошу подскажите в чём проблема?



Страницы: 1 вся ветка

Текущий архив: 2009.12.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.031 c
15-1255303017
TIF
2009-10-12 03:16
2009.12.13
Путь офисного самурая


2-1256057370
Инна
2009-10-20 20:49
2009.12.13
GDI как "затенить" заданый прямоугольник ?


2-1256659669
Turok
2009-10-27 19:07
2009.12.13
WinSight и авторизация


2-1256816360
Morgan128
2009-10-29 14:39
2009.12.13
Как отследить последнее действие клавы/мыши


15-1255725008
Юрий
2009-10-17 00:30
2009.12.13
С днем рождения ! 17 октября 2009 суббота