Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

XMLHTTP [D7, WinXP]


Страницы:   1 2

dima_q ©   (2008-06-30 13:13:00) 

Здравствуйте Мастера!
Есть COM библиотека служащая для общения с сервером. Общения происходит посредством xml по http. Для непосредственной связи используется объект XMLHTTP. Вопрос: Для работы с сервером, в моей либе создается отдельный поток. В потоке осуществляется вход в апартмент:
CoInitializeEx(nil, COINIT_APARTMENTTHREADED). После создания объекта c и присвоения всех свойств, вызывается метод XMLHTTP.send(). Так вот при использовании потоковой модели STA(COINIT_APARTMENTTHREADED) запрос на сервер не идет, все остается висеть навечно. А при использовании MTA все благополучно проходит. Сам сервер XMLHTTP в реестре помечен как Appartment. Подскажите в чем может быть проблема. Почему при STA не вознивает никаких ошибок, но запрос не происходит? P.S.: использовать MTA нет возможности, из-за дальнейших проблем с клиентами моей либы.


Сергей М.   (2008-08-11 15:01:00) [1]


> Тема открытая автором XMLHTTP


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

Ты же не сподобился даже изложить свои условия и режим эксплуатации компонента !

Какого же лешего ты ожидаешь услышать в ответ что-то "толковое" ?

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


igor_r   (2008-08-11 14:52:00) [2]

Тема открытая автором XMLHTTP.
Сергей, тебе что поговорить не с кем? Лучше бы толковое что написал.
Считаю вопрос закрытым.


Сергей М.   (2008-08-11 14:48:00) [3]


> автор вопроса ковырнул эту тему глубоко


А ты внимательно читал ветку, перед тем как сделать вывод о якобы "схожести" ?


igor_r   (2008-08-11 14:24:00) [4]

Но решаемые задачи схожие. Форум практически единственный который затронул эту тему. Да и автор вопроса ковырнул эту тему глубоко...


Сергей М.   (2008-08-11 14:14:00) [5]


> igor_r ©   (11.08.08 14:12) [32]


А у автора вопрос был совершенно о другом.


igor_r   (2008-08-11 14:12:00) [6]

Вопрос связан с передачей информации через SSL методом XMLHTTP.send(data).


Сергей М.   (2008-08-11 13:47:00) [7]


> На локальном HTTP сервере передача информации проходит успешно


Чудесно.

А какое отношение это имеет к STA и MTA ?


igor_r   (2008-08-11 13:30:00) [8]

Спасибо за теплые слова.
Передаю на сервер через SSL следующее:
Variant bstr;
bstr.VType=VT_BSTR;
SysFreeString(bstr.bstrVal);
bstr.bstrVal=SysAllocString(L"<?xml\ version='1.0'\ encoding='WINDOWS-1251'?><request><tpnum>-1</tpnum></request>");
hRes=pXMLHTTP->send(bstr);
На локальном HTTP сервере передача информации проходит успешно.


Сергей М.   (2008-08-11 13:07:00) [9]

Проблема в тебе.
Я понятия не имею, что у тебя творится в этой самой send


igor_r   (2008-08-11 12:53:00) [10]

Сергей! Не придирайся к словам. Давай по существу проблемы...


Сергей М.   (2008-08-11 12:21:00) [11]

И что ?

Вызов функции, с параметром или без, - это просто вызов функции, не более того.

Причем здесь какое-то там ее "наполнение" ?


igor_r   (2008-08-11 10:49:00) [12]

Функция send может быть как с параметром так и без него: send() или
send(data)

Игорь.


Сергей М.   (2008-08-11 08:43:00) [13]


> Если функция send пустая


Как это "пустая" ?


> заполняю send данными


Как можно "заполнить функцию данными" ?

Ерунда какая-то ..


igor_r   (2008-08-11 02:06:00) [14]

Всем доброго времени суток.

У меня задача схожая с dima_q, и отличается лишь тем, что данные передаются через SSL. Приложение пишу на ВСВ. Установил OpenSSL, подвязал сертификат. Если функция send пустая, идет обращение на сервер, запрашивается сертификат, получаю ответ с сервера. А если заполняю send данными получаю пустое окно ответа и сертификат не запрашивается. Скорее всего с передаваемыми данными что-то не так. Может что-то посоветуете.

Игорь


dima_q   (2008-07-02 13:32:00) [15]

Уважаемый
> Сергей М. ©
огромнейшее, просто громадное Вам человеческое спасибо!!! Все работает... Вопрос закрыт.


Сергей М.   (2008-07-02 13:17:00) [16]

Без учета таймаута примерно таким:

while not Terminated and (lastState <> 4) do
begin
 if PeekMessage(rMsg,0,0,0, PM_REMOVE) then
   DispatchMessage (rMsg)  
 else
   Sleep(0);
end;


dima_q   (2008-07-02 12:14:00) [17]


> Ну тогда твой цикл ожидания/выборки/диспетчеризации сообщений
> никуда не годится - "вис" происходит на GetMessage, когда
> из очереди выбраны и диспетчеризованы все имеющиеся там
> сообщения (т.е. очередь пуста).

Подскажите выход... пожалуйсто:) Каим должен быть цикл выборки сообщений, можно пример?


Сергей М.   (2008-07-02 11:51:00) [18]

Ну тогда твой цикл ожидания/выборки/диспетчеризации сообщений никуда не годится - "вис" происходит на GetMessage, когда из очереди выбраны и диспетчеризованы все имеющиеся там сообщения (т.е. очередь пуста).


dima_q   (2008-07-02 11:41:00) [19]


> А где в этом коде собственно установка асинхронного режима
> работы компонента ?

Нет не дефолтный. Он передается параметром в функцию Open:
m_xmlHTTP50.open('POST', m_url, m_async);
я просто удалил куски кода(где ...).


Сергей М.   (2008-07-02 11:27:00) [20]

Чудесно.

А где в этом коде собственно установка асинхронного режима работы компонента ?

Или это дифолтный режим ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо