/// <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); }
/// <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())); }