关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。
想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。
2年前关闭。
我需要一个简短的代码片段来从HTTP服务器获取目录列表。
谢谢
代码之前的一些重要注意事项:
我的选择是使用正则表达式。这允许快速解析和自定义。您可以在每个站点上获得特定的正则表达式模式,从而可以采用一种非常模块化的方法。如果您计划在不更改源代码的情况下使用新的站点支持来增强解析模块,请使用外部源将URL映射到正则表达式模式。
从http://www.ibiblio.org/pub/打印目录列表的示例
namespace Example { using System; using System.Net; using System.IO; using System.Text.RegularExpressions; public class MyExample { public static string GetDirectoryListingRegexForUrl(string url) { if (url.Equals("http://www.ibiblio.org/pub/")) { return "<a href=\".*\">(?<name>.*)</a>"; } throw new NotSupportedException(); } public static void Main(String[] args) { string url = "http://www.ibiblio.org/pub/"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string html = reader.ReadToEnd(); Regex regex = new Regex(GetDirectoryListingRegexForUrl(url)); MatchCollection matches = regex.Matches(html); if (matches.Count > 0) { foreach (Match match in matches) { if (match.Success) { Console.WriteLine(match.Groups["name"]); } } } } } Console.ReadLine(); } } }