/// <summary> /// Запрос возвращает информацию о папке dir и всех папках и файлах в нем /// </summary> /// <param name="dir">Папка</param> /// <param name="getRoot"></param> /// <returns>Список файлов и папок в папке dir или null если произошла ошибка</returns> public List <DirInfo> GetDirectories(string dir, bool getRoot = false) { var request = createRequest(dir); request.Headers.Add("Depth", "1"); request.Method = "PROPFIND"; try { //WebProxy proxy = new WebProxy(); //proxy.Address = new Uri("http://127.0.0.1:8888"); //request.Proxy = proxy; var resp = (HttpWebResponse)request.GetResponse(); using (var responseStream = resp.GetResponseStream()) { var sr = new StreamReader(responseStream); var cont = sr.ReadToEnd(); var dinfo = new List <DirInfo>(); while (true) { var posBeg = cont.IndexOf("<d:response>", StringComparison.InvariantCultureIgnoreCase); var posEnd = cont.IndexOf("</d:response>", StringComparison.InvariantCultureIgnoreCase); if (posBeg < 0) { break; } try { dinfo.Add(DirInfo.Parse(cont.Substring(posBeg, posEnd - posBeg), server)); } catch {} cont = cont.Substring(posEnd + 1); } if (!getRoot && dinfo.Count > 0) { dinfo.RemoveAt(0); } return(dinfo); } } catch (Exception ex) { if (ThrowErrors) { throw; } lastError = ex.Message; return(null); } }
/// <summary> /// Запрос возвращает информацию о папке dir и всех папках и файлах в нем /// </summary> /// <param name="dir">Папка</param> /// <returns>Список файлов и папок в папке dir или null если произошла ошибка</returns> public DirInfo GetInfo(string dir) { var request = createRequest(dir); request.Headers.Add("Depth", "1"); request.Method = "PROPFIND"; try { var resp = (HttpWebResponse)request.GetResponse(); using (var responseStream = resp.GetResponseStream()) { var sr = new StreamReader(responseStream); var cont = sr.ReadToEnd(); var dinfo = new List <DirInfo>(); while (true) { var posBeg = cont.IndexOf("<d:response>", StringComparison.InvariantCultureIgnoreCase); var posEnd = cont.IndexOf("</d:response>", StringComparison.InvariantCultureIgnoreCase); if (posBeg < 0) { break; } try { dinfo.Add(DirInfo.Parse(cont.Substring(posBeg, posEnd - posBeg), server)); } catch { } cont = cont.Substring(posEnd + 1); } return(dinfo != null && dinfo.Count > 0 ? dinfo[0] : null); } } catch (Exception ex) { if (ThrowErrors) { throw; } lastError = ex.Message; return(null); } }