Получение обработанной страницы
От: Ramm  
Дата: 29.08.05 08:47
Оценка:
Доброе время суток.
Получается интересная вещь, мне надо сохранить данные из aspx странички, которая лежит на сервере (без участия пользователя), страница состоит из фреймов, вот код:
<frameset frameBorder="0" rows="175,*">
<frame NORESIZE name="CrystalViewerToolbar" src="toolbar.aspx?id=308">
<frame name="CrystalViewerPreview" src="">
</frameset>
Интересующая меня информация находиться в CrystalViewerPreview. Пытался загрузить файл по HTTP:

strURL=”http://server/page.aspx
Dim PageRequest As HttpWebRequest = CType(WebRequest.Create(strURL), HttpWebRequest)
PageRequest.ContentType = "text/html; CHARSET=UTF-8"
PageRequest.Credentials = New NetworkCredential("User", "password", "firma")

Dim PageResponse As WebResponse = PageRequest.GetResponse

Dim r As New IO.StreamReader(PageResponse.GetResponseStream)
Dim page As String = r.ReadToEnd
r.Close()

Программка возвращает, то что выше писал (фреймы). Можно как-нибудь получить html-код того, что IE отображает (уже интерпретированный браузером код)?
Пытался использовать SHDocVw.InternetExplorer :
Dim ie As New SHDocVw.InternetExplorer
ie.Navigate(strURL)
Dim doc As Object
doc = ie.Document
TextBox1.Text = doc.documentElement.innerHTML
(Использовать фреймы у ie.Document – не получилось – frames <error: an exception of type: {System.InvalidCastException} occurred> mshtml.FramesCollection)
Что-то типа того, но эффект такой же. Пытался сохранять
ie.ExecWB(SHDocVw.OLECMDID.OLECMDID_SAVEAS, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, "", "")
Но сохраняет не то что нужно.
Повторяю еще раз вопрос:
Можно как-нибудь получить html-код того, что IE отображает (уже интерпретированный браузером код)?
Re: Получение обработанной страницы
От: egaron http://127.0.0.1
Дата: 29.08.05 12:46
Оценка:
R>Повторяю еще раз вопрос:
R>Можно как-нибудь получить html-код того, что IE отображает (уже интерпретированный браузером код)?

можно рендеринг перехватить


        protected override void Render(HtmlTextWriter writer)
        {
            StringBuilder sb  = new StringBuilder();
            HtmlTextWriter w = new HtmlTextWriter(new System.IO.StringWriter (sb));
            base.RenderChildren (w);
            w.Flush();
            string sFind = "</caption><tr class=\"GridHeader\">\r\n\t\t<td>Помещение</td>";
            //sb.Replace(sFind ,"<tr class = GridHeader ><td rowspan=2>Дата</td><td rowspan=2>Объект</td><td rowspan=2>Торговая марка</td><td colspan=4>Наши пожелания</td><td colspan=4>Пожелания клиента</td><td rowspan=2></td></tr>"+sFind);
            writer.Write(sb.ToString());
        }


либо если тебе нужно изменить рендеринг определенного контрола, то используй SetRenderMethodDelegate
Re[2]: Получение обработанной страницы
От: Ramm  
Дата: 29.08.05 13:16
Оценка:
Здравствуйте, egaron, Вы писали:

R>>Повторяю еще раз вопрос:

R>>Можно как-нибудь получить html-код того, что IE отображает (уже интерпретированный браузером код)?

E>можно рендеринг перехватить



E>
E>        protected override void Render(HtmlTextWriter writer)
E>        {
E>            StringBuilder sb  = new StringBuilder();
E>            HtmlTextWriter w = new HtmlTextWriter(new System.IO.StringWriter (sb));
E>            base.RenderChildren (w);
E>            w.Flush();
E>            string sFind = "</caption><tr class=\"GridHeader\">\r\n\t\t<td>Помещение</td>";
E>            //sb.Replace(sFind ,"<tr class = GridHeader ><td rowspan=2>Дата</td><td rowspan=2>Объект</td><td rowspan=2>Торговая марка</td><td colspan=4>Наши пожелания</td><td colspan=4>Пожелания клиента</td><td rowspan=2></td></tr>"+sFind);
E>            writer.Write(sb.ToString());
E>        }
E>


E>либо если тебе нужно изменить рендеринг определенного контрола, то используй SetRenderMethodDelegate



Но у меня нет доступа к серверному коду странице, мне надо на клиенте запустить -> клиент посылает запрос -> полученный ответ сохраняется на клиенте, Проблема — если просто запустить в браузере, возращаетсся нормально, через VB возращается фреймы.
Re[3]: Получение обработанной страницы
От: Козьма Прутков Россия  
Дата: 29.08.05 13:21
Оценка:
Здравствуйте, Ramm, Вы писали:

R>Но у меня нет доступа к серверному коду странице, мне надо на клиенте запустить -> клиент посылает запрос -> полученный ответ сохраняется на клиенте, Проблема — если просто запустить в браузере, возращаетсся нормально, через VB возращается фреймы.


Эх, дружище, не писал ты ничего на HTML Браузеру приходит фреймсет, он его разбирает и запрашивает (отдельно!) содержимое конкретных фреймов. Так что красота в IE несколько обманчива
Да хранит вас господь в сухом прохладном месте...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.