Exemple #1
0
 public PhotoList(WebUtil objWebUtil)
 {
     m_objWebUtil = objWebUtil;
 }
Exemple #2
0
        public static ArrayList DAVGetData(WebUtil objWebUtil, string strRoot)
        {
            ArrayList objResult = new ArrayList();

            if (strRoot == "" || strRoot == null)
            {
                strRoot = "http://groups.msn.com";
            }

            // Build the query.
            string folderQuery = null;

            folderQuery += "<?xml version='1.0' encoding='UTF-8' ?>";
            folderQuery += "<a:propfind xmlns:a='DAV:' xmlns:b='urn:schemas-microsoft-com:datatypes'>";
            folderQuery += "<a:prop>";
            folderQuery += "<a:name/>";
            folderQuery += "<a:parentname/>";
            folderQuery += "<a:href/>";
            folderQuery += "<a:ishidden/>";
            folderQuery += "<a:isreadonly/>";
            folderQuery += "<a:getcontenttype/>";
            folderQuery += "<a:contentclass/>";
            folderQuery += "<a:getcontentlanguage/>";
            folderQuery += "<a:creationdate/>";
            folderQuery += "<a:lastaccessed/>";
            folderQuery += "<a:getlastmodified/>";
            folderQuery += "<a:getcontentlength/>";
            folderQuery += "<a:iscollection/>";
            folderQuery += "<a:isstructureddocument/>";
            folderQuery += "<a:defaultdocument/>";
            folderQuery += "<a:displayname/>";
            folderQuery += "<a:isroot/>";
            folderQuery += "<a:resourcetype/>";
            folderQuery += "</a:prop>";
            folderQuery += "</a:propfind>";

            // Declare locals.
            HttpWebRequest  request  = null;
            HttpWebResponse response = null;

            // We need to try a few times to hit the server

            // Get the response
            int iTryCount = 2;

            while (iTryCount > 0 && response == null)
            {
                try
                {
                    // Setup the request
                    request                 = (HttpWebRequest)WebRequest.Create(strRoot);
                    request.Method          = "PROPFIND";
                    request.CookieContainer = new CookieContainer();
                    request.CookieContainer.Add(objWebUtil.cookies);
                    request.AllowAutoRedirect = false;
                    request.UserAgent         = "Microsoft Data Access Internet Publishing Provider DAV";
                    request.Headers.Add("PROPFIND", folderQuery);
                    request.Headers.Add("Depth", "1");
                    request.Headers.Add("Translate", "f");

                    // Get the response
                    response = (HttpWebResponse)request.GetResponse();
                }
                catch (WebException e)
                {
                    if (iTryCount == 1)
                    {
                        throw e;
                    }
                }
                iTryCount--;
            }

            string strResult = new StreamReader(response.GetResponseStream()).ReadToEnd();

            //Console.WriteLine(strResult);

            // Store the response cookies
            objWebUtil.cookies.Add(response.Cookies);

            // Get the xml dom from the string
            XmlDocument xmldoc = new XmlDocument();

            // For some reason, I can't get multiple namespaces to work in this parser.
            // I'm going to cheat and simply eliminate them from the xml before I parse.
            // Ugly, but works.

            strResult = strResult.Replace("a:", "");
            strResult = strResult.Replace("b:", "");

            //Console.WriteLine(strResult);

            xmldoc.LoadXml(strResult);


            XmlNodeList nlist = xmldoc.SelectNodes("//response");

            for (int i = 0; i < nlist.Count; i++)
            {
                XmlNode n = nlist[i];

                string strName = HttpUtility.UrlDecode(n.SelectSingleNode("href").InnerText);

                if (strName.ToLower() != strRoot.ToLower())
                {
                    DavItem objDavItem = new DavItem();

                    objDavItem.strName        = strName;
                    objDavItem.strDisplayName = n.SelectSingleNode("propstat/prop/displayname").InnerText;
                    objDavItem.fIsCollection  = (n.SelectSingleNode("propstat/prop/iscollection").InnerText == "1");
                    objDavItem.fIsHidden      = (n.SelectSingleNode("propstat/prop/ishidden").InnerText == "1");
                    objDavItem.iContentLength = Convert.ToInt32(n.SelectSingleNode("propstat/prop/getcontentlength").InnerText);
                    objDavItem.strContentType = n.SelectSingleNode("propstat/prop/getcontenttype").InnerText;
                    objDavItem.dtCreated      = Convert.ToDateTime(n.SelectSingleNode("propstat/prop/creationdate").InnerText);
                    objDavItem.dtModified     = Convert.ToDateTime(n.SelectSingleNode("propstat/prop/getlastmodified").InnerText);

                    objResult.Add(objDavItem);
                }
            }


            return(objResult);
        }