您好我尝试使用HttpWebRequest读取页面
string lcUrl = "http://www.greatandhra.com";
HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(lcUrl);
loHttp.Timeout = 10000; // 10 secs
loHttp.UserAgent = "Code Sample Web Client";
HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse();
Encoding enc = Encoding.GetEncoding(1252); // Windows default Code Page
StreamReader loResponseStream =
new StreamReader(loWebResponse.GetResponseStream(), enc);
string lcHtml = loResponseStream.ReadToEnd();
mydiv.InnerHtml = lcHtml;
// Response.Write(lcHtml);
loWebResponse.Close();
loResponseStream.Close();
我能够读取该页面并将其绑定到mydiv。但是,当我点击该div中的任何一个链接时,它不会显示任何结果。因为我的应用程序不包含整个站点。那么我们现在要做什么。
有人可以复制我的代码并测试它plz
纳古
答案 0 :(得分:1)
我很确定你不能在没有破坏东西的情况下在DIV中插入整页。事实上,整个head标签可能会被完全跳过(并且可能无法运行任何javascript代码)。考虑到你似乎想要做的事情,我建议你使用一个带有动态src的IFRAME,这也有望解除你服务器的压力(这将不再负责获取要镜像的html)。
答案 1 :(得分:1)
如果你真的想要将整页HTML嵌入另一页,那么IFRAME标签可能就是使用它而不是DIV。
您不必创建Web请求并拥有所有代码来检索远程页面,您只需将IFRAME的src属性设置为指向您希望它显示的页面即可。
例如,标记中的类似内容:
<iframe src="<%=LcUrl %>" frameborder="0"></iframe>
其中LcUrl是代码隐藏页面上的属性,它会从您的示例中公开您的字符串 lcUrl 。
或者,您可以使IFRAME runat =“server”并以编程方式设置其src属性(或者如果 想要的话,甚至以与您的代码示例相同的方式注入innerHTML)。< / p>
答案 2 :(得分:0)
你放入的代码。div的内部HTML包含整个页面(包括&lt; html&gt;,&lt; body&gt;,&lt; / html&gt;和&lt; / body&gt;),它们可以导致一个miriad任意数量的浏览器出现问题。
我要么移动到iframe,要么考虑某种解析远程站点的HTML并显示转换后的版本(即剥离HTML,BODY,META标签,替换一些链接URL等)。
答案 3 :(得分:0)
但是当我点击该div中的任何一个链接时,它都没有显示任何结果
可能是因为下载页面中的链接是相对的...如果您只是将HTML复制到页面中的DIV中,浏览器会考虑相对于当前URL的链接:它不知道这个链接的来源内容。我认为解决方案是解析下载的HTML,并将href属性中的相对URL转换为绝对URL
答案 4 :(得分:0)
如果你想嵌入它,除了身体部位之外,你需要除掉一切。这意味着您必须为&lt; body ....&gt;解析字符串lcHTML并删除之前的所有内容并包含body标签。您还必须去掉&lt; / body&gt;中的所有内容。然后你需要解析所有出现的&lt; a href =“.....”&gt;的字符串。不以http://开头,包括h t t p://www.greatandhra.com或设置&lt; base target =“h t t p://www.greatandhra.com”&gt;在你的头部。
如果您不想嵌入,只需清除响应缓冲区并将lcHTML字符串流回浏览器。
PS:我必须用空格写下所有空格才能发布。
答案 5 :(得分:0)
您尝试做的事情就是显示您网站中嵌入的其他网站。为了通过将它放入div来工作,你必须在body标签之间提取代码,因为它对html无效并且在另一个页面的中间。
链接无法正常工作,因为您现在已经在网站中将该页面脱离了上下文,因此您还必须重写页面上相对的任何链接(即不以http开头)指向到您网站上的一个页面,然后将获取其他网站页面并将其显示回您的网站,或者您可以将您抓取的网站的网址添加到所有相关链接的开头,以便它们链接回该网站