private string WebRequest(string method, string uri) { string responseData = string.Empty; HttpWebRequest webRequest; ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; ServicePointManager.CertificatePolicy = new CertificateManager(); try { webRequest = ProxiedWebRequest.Create(uri); webRequest.Method = method; webRequest.ServicePoint.Expect100Continue = false; using (var responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream())) { responseData = responseReader.ReadToEnd(); } } catch (Exception e) { Logger.Error("Caught exception. Message: {0}", e.Message); Logger.Error("Stack trace for previous exception: {0}", e.StackTrace); throw; } return(responseData); }
/// <summary> /// Wraps a web request into a convenient package. /// </summary> /// <param name="method">HTTP method of the request.</param> /// <param name="url">Full URL to the web resource.</param> /// <param name="postData">Data to post in query string format.</param> /// <returns>The web server response.</returns> private string MakeWebRequest(RequestMethod method, string url, List <IQueryParameter <string> > parameters, string postData) { var responseData = string.Empty; ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; ServicePointManager.CertificatePolicy = new CertificateManager(); // TODO: Set UserAgent, Timeout, KeepAlive, Proxy? HttpWebRequest webRequest = ProxiedWebRequest.Create(url); webRequest.Method = method.ToString(); webRequest.ServicePoint.Expect100Continue = false; var headerParams = parameters.Implode(",", q => string.Format("{0}=\"{1}\"", q.Name, q.Value)); if (Debugging) { Logger.Debug("Generated auth header params string: " + headerParams); } webRequest.Headers.Add("Authorization", String.Format("OAuth realm=\"{0}\",{1}", Realm, headerParams)); if (postData == null) { postData = string.Empty; } if (method == RequestMethod.PUT || method == RequestMethod.POST) { webRequest.ContentType = "application/json"; // TODO: Error handling? using (var requestWriter = new StreamWriter(webRequest.GetRequestStream())) requestWriter.Write(postData); } try { using (var responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream())) { responseData = responseReader.ReadToEnd(); } } catch (Exception e) { Logger.Error("Caught exception. Message: {0}", e.Message); Logger.Error("Stack trace for previous exception: {0}", e.StackTrace); Logger.Error("Rest of stack trace for above exception: {0}", System.Environment.StackTrace); throw; } if (Debugging) { Logger.Debug("Made web request, got response: {0}", responseData); } return(responseData); }