IEnumerable<DavResource> MakeRequest(Uri uri, DavVerb verb) { using (var queryStream = new MemoryStream()) { PrepareRequestXml(queryStream); long contentLength = queryStream.Length; HttpWebRequest request = PrepareWebRequest(uri, verb, contentLength); using (Stream s = request.GetRequestStream()) { queryStream.WriteTo(s); s.Close(); } using (var response = (HttpWebResponse)request.GetResponse()) { using (Stream responseStream = response.GetResponseStream()) { byte[] bytes = responseStream.ReadToEnd(); Trace.WriteLine(Encoding.UTF8.GetString(bytes)); using (var reader = new MemoryStream(bytes)) { return ParseResponse(uri, reader); } } } } }
public static HttpWebRequest CreateWebRequest(this Uri location, DavVerb verb, RemoteCredentials credentials) { var request = (HttpWebRequest)WebRequest.Create(location.For(credentials)); request.Credentials = credentials.For(location); request.Method = verb.ToString().ToUpperInvariant(); return request; }
HttpWebRequest PrepareWebRequest(Uri uri, DavVerb verb, long contentLength) { var request = (HttpWebRequest)WebRequest.Create(uri); if(_credentials != null) request.Credentials = _credentials.For(uri); request.Method = verb.ToString().ToUpperInvariant(); request.ProtocolVersion = HttpVersion.Version10; request.Headers["Depth"] = "1"; request.ContentType = "text/xml; charset=\"utf-8\""; request.ContentLength = contentLength; return request; }