/// <summary> /// Gets a string response from a REST Uri. /// </summary> /// <param name="rest">Details of things we want in the REST request.</param> /// <returns></returns> public string GetResponse(TestRestRequest rest) { var response = Invoke(rest); using(var reader = new StreamReader(response.GetResponseStream())) { return reader.ReadToEnd(); } }
/// <summary> /// Invokes the given request. /// </summary> /// <param name="rest">Details of things we want in the REST request.</param> /// <returns>A vanilla HttpWebResponse</returns> public HttpWebResponse Invoke(TestRestRequest rest) { var request = (HttpWebRequest)WebRequest.Create( new Uri(new Uri(_webServerUrl), rest.Uri).ToString()); request.AllowAutoRedirect = true; request.Method = rest.Verb; request.ContentType = rest.ContentType; request.Credentials = rest.Credentials; if(!string.IsNullOrEmpty(rest.Accept)) request.Accept = rest.Accept; if (rest.Body != null) { request.ContentLength = Encoding.UTF8.GetByteCount(rest.Body); Stream bodyStream = request.GetRequestStream(); bodyStream.Write(Encoding.UTF8.GetBytes(rest.Body), 0, (int)request.ContentLength); } if (rest.Headers != null) request.Headers.Add(rest.Headers); Console.WriteLine(request.AsDebugString()); var response = (HttpWebResponse) request.GetResponse(); Console.WriteLine("\t... {0}", response.StatusCode); return response; }