【问题标题】:Download HTML page using WebClient issue使用 WebClient 问题下载 HTML 页面
【发布时间】:2013-11-15 18:35:10
【问题描述】:

在 Asp.net MVC 中,我想使用 url(DownloadString 方法)下载 html 页面内容,以便随后转换为 PDF。 Html 页面本身正在使用 JSRender 绑定到模板。

 using (WebClient client = new WebClient())
 {
      string html = client.DownloadString(url);
 }

但是,当我尝试从 Url 下载 Html 时,它似乎在渲染完成之前下载了页面,所以实际上我得到的 HTML 几乎是预渲染的,这不是我想要的。

是否有可能使用 WebClient 甚至从服务器端实现我想要实现的目标,而无需从客户端以某种方式做到这一点?

【问题讨论】:

    标签: c# html asp.net asp.net-mvc


    【解决方案1】:

    在页面完全加载之前,Webclient 不会返回 html。

    页面中很有可能有一个 javascript,当它运行时,它会将更多内容加载到页面中。因此,当您下载页面时,该 javascript 不会运行,因此,某些部分不会被加载

    【讨论】:

    • 没错,我必须将用户代理作为响应标头的一部分发送。
    • 您是否自己回答了问题并将您自己的答案标记为正确答案?! :)
    • 它们都没有提供正确的答案,因为它们似乎不适用于原始问题中的场景。
    【解决方案2】:

    试试这个:

    static string GetHtmlPage(string strURL)
    {
        String strResult;
        WebRequest objRequest = WebRequest.Create(strURL);
        WebResponse objResponse = objRequest.GetResponse();
        using (var sr = new StreamReader(objResponse.GetResponseStream()))
        {
            strResult = sr.ReadToEnd();
            sr.Close();
        }
        return strResult;
    }
    
    private void button3_Click(object sender, EventArgs e)
    {
        MessageBox.Show(GetHtmlPage("http://www.awardwinnersonly.com"));
    }
    

    【讨论】:

    • 好的,我相信我正在尝试其他方法,但这不起作用,我在下面的回答也没有,因为预期的 html 仍未返回。
    • 它对我有用,所以我不知道你的问题是什么。你有任何错误的消息吗?当你一步步通过它时,会发生什么?
    • 我正在使用 JSRender 绑定到模板,我得到的 html 是 html 预绑定。您是否尝试过在视图中使用 JSRender 或 Knockout?
    • 不,我显示的代码是整个代码;这是一个简单的实用方法。这不是项目的一部分;这是简单的独立代码。
    • 好吧,恐怕它不适用于使用 JSRender。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多