有一个frame页面用框架做的
框架包括一个头页面.一个pdf
我直接访问pdf不能下载.应该是通过cookie,session验证的.
我用httpresponse加cookie也无法下载.
所以求助webbroswer下访问那个frame页面后.通过webbroswer下载文件的方式!谢谢

解决方案 »

  1.   

    1.用httpwebrequest是肯定可以的,
    2.如果用webbroswer,那就一句话的事。关键是你要开一个线程等那个完成后再下载第二个pdf
      

  2.   

    1.httpwebrequest 我cookie一个不差的传过去都无法下载.应该还是没有验证通过
    2.webbroswer给个代码吧.我给的分不低呀~
      

  3.   

    1.获取frame的源文件MessageBox.Show(webBrowser1.Document.Window.Frames["main"].Document.Body.InnerHtml);2.获取frame的HTMLDocument接口HTMLDocument doc = (HTMLDocument)webBrowser1.Document.DomDocument;
    object j;
    for (int i = 0; i < doc.parentWindow.frames.length; i++)
    {
          j = i;
          HTMLWindow2Class frame = doc.parentWindow.frames.item(ref j) as HTMLWindow2Class;
          if (frame.name == "main")
           {                   
                 MessageBox.Show(frame.document.title);                    
           }
    }      
    3.获取frame的IHTMLDocument2接口IHTMLDocument2 doc = (IHTMLDocument2)webBrowser1.Document.Window.Frames["main"].Document.DomDocument;4.取得frame中被点击的连接private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
    {
         string url = webBrowser1.Document.Window.Frames["main"].Document.ActiveElement.GetAttribute("src");
    }
    原贴,原出处:http://blog.csdn.net/llj1985/archive/2007/09/01/1768147.aspx
      

  4.   

    hyblusea你给的代码没有实现保存的呀.获取src简单.
      

  5.   


    System.IO.FileInfo file = new FileInfo(path);
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + t);HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());HttpContext.Current.Response.ContentType = "application/octet-stream";
    HttpContext.Current.Response.WriteFile(file.FullName);
    HttpContext.Current.Response.End();用上面的代码,就算aspx页面也可以下载了。
      

  6.   

     bool bFirst = true;
            private void Form1_Load(object sender, EventArgs e)
            {
                this.webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
                this.webBrowser1.Navigate("http://www.baidu.com");
                
                            
            }        void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {            if (bFirst)
                {
                    bFirst = false;
                    this.webBrowser1.Navigate("http://www.google.com");
                }
                else
                {
                    MessageBox.Show(this.webBrowser1.DocumentText);
                }
            }
      

  7.   


    试试用 Fiddler2 软件抓下 http 包, 分析下用 httpwebrequest 完全 模拟 http 包 发送, 肯定是能实现的
      

  8.   

    try:
                System.Net.WebClient web = new System.Net.WebClient();
                web.DownloadString("http://www.baidu.com");
                web.DownloadFile("http://www.baidu.com/aa.pdf", "dd:\aa.pdf");
      

  9.   


    抓过的.cookie一个不差的发过去还是不行.
      

  10.   

    抓过的.cookie一个不差的发过去还是不行.
    ==>
    把地址发过来试试?
      

  11.   

    http://www3.interscience.wiley.com/cgi-bin/fulltext/123194730/PDFSTART
      

  12.   

    原页面中文件地址隐藏了。有地址可使用
    private void button1_Click(object sender, EventArgs e)
            {
                WebClient DownFile=new WebClient();
                DownFile.DownloadFile(@"", @"");
            }
    不需要发送cookie可直接下载
    webbrower 跨iframe
    http://msdn.microsoft.com/en-us/library/ms537182(VS.85).aspx
      

  13.   

    webclient不能下载文件.文件的获取是需要用户验证一下的.
    下载的只是错误页面的html