示例#1
0
        /// <summary>
        /// Executes PROPFIND method.
        /// </summary>
        /// <param name="requestUri">Request URI.</param>
        /// <param name="propertyNames">Properties to get. Value null means property names listing.</param>
        /// <param name="depth">Maximum depth inside collections to get.</param>
        /// <returns>Returns server returned responses.</returns>
        public WebDav_MultiStatus PropFind(string requestUri, string[] propertyNames, int depth)
        {
            if (requestUri == null)
            {
                throw new ArgumentNullException("requestUri");
            }

            StringBuilder requestContentString = new StringBuilder();

            requestContentString.Append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n");
            requestContentString.Append("<propfind xmlns=\"DAV:\">\r\n");
            requestContentString.Append("<prop>\r\n");
            if (propertyNames == null || propertyNames.Length == 0)
            {
                requestContentString.Append("   <propname/>\r\n");
            }
            else
            {
                foreach (string propertyName in propertyNames)
                {
                    requestContentString.Append("<" + propertyName + "/>");
                }
            }
            requestContentString.Append("</prop>\r\n");
            requestContentString.Append("</propfind>\r\n");

            byte[] requestContent = Encoding.UTF8.GetBytes(requestContentString.ToString());

            Dictionary <String, String> headers = null;

            if (depth > -1)
            {
                headers = new Dictionary <String, String>()
                {
                    { "Depth", depth.ToString() },
                };
            }

            WebDav_MultiStatus status = null;

            Helpers.SendHttpRequest(requestUri, "PROPFIND", "application/xml", m_pCredentials, headers,
                                    contentBytes: requestContent,
                                    modifyRequestFunc: (HttpWebRequest request) =>
            {
#if !NETSTANDARD
                request.ContentLength = requestContent.Length;
#endif
            },
                                    handleResponseFunc: (WebResponse response) =>
            {
                status = WebDav_MultiStatus.Parse(response.GetResponseStream());
            });

            return(status);
        }
示例#2
0
        /// <summary>
        /// Executes PROPFIND method.
        /// </summary>
        /// <param name="requestUri">Request URI.</param>
        /// <param name="propertyNames">Properties to get. Value null means property names listing.</param>
        /// <param name="depth">Maximum depth inside collections to get.</param>
        /// <returns>Returns server returned responses.</returns>
        public WebDav_MultiStatus PropFind(string requestUri, string[] propertyNames, int depth)
        {
            if (requestUri == null)
            {
                throw new ArgumentNullException("requestUri");
            }

            StringBuilder requestContentString = new StringBuilder();

            requestContentString.Append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n");
            requestContentString.Append("<propfind xmlns=\"DAV:\">\r\n");
            requestContentString.Append("<prop>\r\n");
            if (propertyNames == null || propertyNames.Length == 0)
            {
                requestContentString.Append("   <propname/>\r\n");
            }
            else
            {
                foreach (string propertyName in propertyNames)
                {
                    requestContentString.Append("<" + propertyName + "/>");
                }
            }
            requestContentString.Append("</prop>\r\n");
            requestContentString.Append("</propfind>\r\n");

            byte[] requestContent = Encoding.UTF8.GetBytes(requestContentString.ToString());

            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(requestUri);

            request.Method        = "PROPFIND";
            request.ContentType   = "application/xml";
            request.ContentLength = requestContent.Length;
            request.Credentials   = m_pCredentials;
            if (depth > -1)
            {
                request.Headers.Add("Depth: " + depth);
            }
            request.GetRequestStream().Write(requestContent, 0, requestContent.Length);

            return(WebDav_MultiStatus.Parse(request.GetResponse().GetResponseStream()));
        }