![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
XMLHTTP [D7, WinXP]
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]Чудесно.
А где в этом коде собственно установка асинхронного режима работы компонента ?
Или это дифолтный режим ?