Доброго! Возможно вопрос туп... Но мне нужна помощь...
Использую компонент браузера 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 работать с ним — всё отлично... Проясните ситуацию, пожалуйста...