Доброго! Возможно вопрос туп... Но мне нужна помощь...
Использую компонент браузера IWebBrowser2 для отправки методом POST XML файла на сервер, в ответ получаю другой XML файл ( ответ сервера ), но почему-то не могу получить к нему доступ... Приведу упрощённый кусок кода, заранее прошу прощения за весь этот гемор с указателями ( работаю на ANSI C ):
bstrURL = SysAllocString( OLESTR( "http://176.31.0.100:770/" ) ); /* Адрес сервера, с которым работаю */
bstrHeaders = SysAllocString( OLESTR( "Content-Type: text/xml\r\n" ) ); /* Посылать буду XML данные */
/* Пытаюсь работать с полученной XML, но на этом этапе в pXMLDoc возвращается NULL — т.е. ошибка */
if ( FAILED ( hr = lpDispatch->lpVtbl->QueryInterface( lpDispatch, &IID_IXMLDOMDocument2, ( void** ) &pXMLDoc ) ) ) exit( 1 );
Пожалуйста, объясните мне, почему на последнем этапе в pXMLDoc возвращается NULL? Что я делаю не правильно? Хотя, если с помощью компоненты IWebBrowser2 получать обычный HTML файл, делать get_Document и затем через IHTMLDocument2 работать с ним — всё отлично... Проясните ситуацию, пожалуйста...
Re: Проблемы при работе с IWebBrowser2 и IXMLDOMDocument2
Здравствуйте, G., Вы писали:
G.>Доброго! Возможно вопрос туп... Но мне нужна помощь...
Так ведь WebBrowser — это не XML-парсер. И он не поддерживает IXMLDocument2. Наверяка та HRESULT == E_NOINTERFACE.
> Приведу упрощённый кусок кода, заранее прошу прощения за весь этот гемор с указателями ( работаю на ANSI C ):
Зачем так жестоко поступать с самим собой? С++ и CComPtr<> оч. сильно упрощают жизнь.
Re[2]: Проблемы при работе с IWebBrowser2 и IXMLDOMDocument2
Здравствуйте, al, Вы писали:
al>Так ведь WebBrowser — это не XML-парсер. И он не поддерживает IXMLDocument2. Наверяка та HRESULT == E_NOINTERFACE.
А не подскажите, в какую сторону копать? Мне в принципе парсить не нужно XML на данном этапе, да и не даст IE походу... Как в текущей ситуации сохранить полученные XML данные в файл на диске? То есть, я сделал get_Document, у меня есть LPDISPATCH для загруженных данных, как их сохранить?
Re[3]: Проблемы при работе с IWebBrowser2 и IXMLDOMDocument2
Здравствуйте, al, Вы писали:
al>А зачем для этого использовать WebBrowser? Используйте XMLParser (тот-же MSXML), который умеет сам загружать XML по http и сохранять его на диск.
Да, да... Такая идея была, но XMLParser не умеет общаться по SSL... Или я ошибаюсь? Просто все эти данные мне необходимо будет пересылать с использованием SSL...
al>И расскажите, зачем вам Ansi-C? Для переносимости? И куда Вы собрались код, использующий IE и COM переносить?
Да, ваше замечание весомо... Я уже исправил этот недостаток... В общем-то мне и не к чему ANSI С...
Re[5]: Проблемы при работе с IWebBrowser2 и IXMLDOMDocument2
G.>Да, да... Такая идея была, но XMLParser не умеет общаться по SSL... Или я ошибаюсь? Просто все эти данные мне необходимо будет пересылать с использованием SSL...
А Вы попробуйте. MSXML использует те же обработчики протоколов, что и MSHTML.
Если ничего не получится, то в WebBeowser нужно использовать свойство body.innerText — в нем и будет весь загруженный в WebBrowser XML (если по нему не пройдется XSLT)
Re[6]: Проблемы при работе с IWebBrowser2 и IXMLDOMDocument2
Здравствуйте, al, Вы писали:
al>А Вы попробуйте. MSXML использует те же обработчики протоколов, что и MSHTML.
К сожалению XMLHTTPRequest не захотел гулять по https... Обидно...
al>Если ничего не получится, то в WebBeowser нужно использовать свойство body.innerText — в нем и будет весь загруженный в WebBrowser XML (если по нему не пройдется XSLT)
И тут вы правы — XSLT немного испоганил исходный XML... Добавил '+' и '-' как он делает это в окне эксплорера...
Не знаю, что делать... Может подкините идейку как гонять данные через https, не используя компонент эксплорера?
Re[7]: Проблемы при работе с IWebBrowser2 и IXMLDOMDocument2
G.>Не знаю, что делать... Может подкините идейку как гонять данные через G.>https, не используя компонент эксплорера?
... используя Wininet функции: InternetOpen, InternetConnect, HttpOpenRequest... ну и т.д.
Re[7]: Проблемы при работе с IWebBrowser2 и IXMLDOMDocument2
Здравствуйте, G., Вы писали:
al>>А Вы попробуйте. MSXML использует те же обработчики протоколов, что и MSHTML. G.>К сожалению XMLHTTPRequest не захотел гулять по https... Обидно...
компонент эксплорера?
Попробуй через URLMoniker, они нормально ходят (вернее MSHTML через них ходит .
"For every complex problem, there is a solution that is simple, neat,
and wrong."