Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }