Проблемы при работе с IWebBrowser2 и IXMLDOMDocument2
От: G. Россия  
Дата: 03.03.05 06:52
Оценка:
Доброго! Возможно вопрос туп... Но мне нужна помощь...

Использую компонент браузера IWebBrowser2 для отправки методом POST XML файла на сервер, в ответ получаю другой XML файл ( ответ сервера ), но почему-то не могу получить к нему доступ... Приведу упрощённый кусок кода, заранее прошу прощения за весь этот гемор с указателями ( работаю на ANSI C ):

if ( FAILED ( hr = CoInitialize( NULL ) ) ) exit( 1 ); /* Инициализируемся */
if ( FAILED ( hr = CoCreateInstance( &CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, &IID_IWebBrowser2, ( void** ) &pWebBrowser ) ) ) exit( 1 ); /* Работа с IWebBrowser2 */

bstrURL = SysAllocString( OLESTR( "http://176.31.0.100:770/" ) ); /* Адрес сервера, с которым работаю */
bstrHeaders = SysAllocString( OLESTR( "Content-Type: text/xml\r\n" ) ); /* Посылать буду XML данные */

V_VT( &vHeaders ) = VT_BSTR; /* Подготовка хидеров */
V_BSTR( &vHeaders ) = bstrHeaders;

/* Моя функция — в vPostData засовываем передаваемый XML */
GetPostData( &vPostData, "<?xml version=\"1.0\" encoding=\"windows-1251\"?>..." );

pWebBrowser->lpVtbl->put_Visible( pWebBrowser, VARIANT_TRUE ); /* Для нагладности делаем видимым окно браузера */

if ( FAILED ( hr = pWebBrowser->lpVtbl->Navigate( pWebBrowser, bstrURL, &vFlags, &vTargetFrameName, &vPostData, &vHeaders ) ) ) exit( 1 ); /* Отправляем данные, и получаем ответ; полученная XML отображается в окне браузера */

wait_page_complete( pWebBrowser, 10000, 100 ); /* Жду полного завершения загрузки данных */

/* Добираюсь до принятого содержимого */
if ( FAILED ( hr = pWebBrowser->lpVtbl->get_Document( pWebBrowser, &lpDispatch ) ) ) exit( 1 );

/* Пытаюсь работать с полученной XML, но на этом этапе в pXMLDoc возвращается NULL — т.е. ошибка */
if ( FAILED ( hr = lpDispatch->lpVtbl->QueryInterface( lpDispatch, &IID_IXMLDOMDocument2, ( void** ) &pXMLDoc ) ) ) exit( 1 );

Пожалуйста, объясните мне, почему на последнем этапе в pXMLDoc возвращается NULL? Что я делаю не правильно? Хотя, если с помощью компоненты IWebBrowser2 получать обычный HTML файл, делать get_Document и затем через IHTMLDocument2 работать с ним — всё отлично... Проясните ситуацию, пожалуйста...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.