2010-11-05 40 views
0

我试图使用列表中的FtpWebRequest类背后HTTP代理

private IEnumerable<ResourceInfo> EnumerateResources(Stream stream) 
    { 
     StreamReader reader = new StreamReader(stream); 
     string line = null; 
     while ((line = reader.ReadLine()) != null) 
     { 
      yield return new ResourceInfo(this, line); 
     } 
    } 

    public override IReadOnlyList<ResourceInfo> GetResources() 
    { 
     FtpWebRequest req = (FtpWebRequest)WebRequest.Create(Url); 
     req.Method = WebRequestMethods.Ftp.ListDirectory; 

     req.Credentials = Credentials; 
     using (var resp = (FtpWebResponse)req.GetResponse()) 
     { 
      using (var stream = resp.GetResponseStream()) 
      { 
       return EnumerateResources(stream).ToReadOnly(); 
      } 
     } 
    } 

这在大多数情况下,确定从FTP地址文件FTP LIST目录。 但是,当我在HTTP代理后面时,响应流的内容包含一个HTML页面 ,该页面列出标签中的文件。有没有优雅的方式来处理这个问题,或者我应该试着手工解析HTML。

回答

0

你应该看看使用HTML Agility Pack。但是如果你提供完全的格式,可以制作更简单的东西。

+0

我已经开发了一个hack从代理生成的HTML中提取数据。如果有更优雅的方式去做,我只是在徘徊 – 2010-11-08 10:55:12