public static string GetUrlContent(string requestedURL) { string urlContent = ""; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestedURL); request.AllowAutoRedirect = false; string location = request.GetResponse().Headers["Location"]; string cookieSessionToken = ExtractSessionCookieValue(request); string cookieTempTokenValue = ExtractTempTokenCookieValue(request); HttpWebRequest redirectRequest = (HttpWebRequest)WebRequest.Create(location); SetAuthentication(redirectRequest, AuthRequestParameters.empty()); redirectRequest.Headers.Add(SESSION_TOKEN_COOKIE_KEY, BuildSessionTokenCookieValue(cookieSessionToken) + ";" + BuildTempTokenCookieValue(cookieTempTokenValue)); HttpWebResponse response = (HttpWebResponse)redirectRequest.GetResponse(); if (response.StatusCode == HttpStatusCode.OK) { Stream receiveStream = response.GetResponseStream(); StreamReader readStream = null; if (response.CharacterSet == null) { readStream = new StreamReader(receiveStream); } else { readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet)); } urlContent = readStream.ReadToEnd(); response.Close(); readStream.Close(); } } catch (WebException e) { using (var stream = e.Response.GetResponseStream()) using (var reader = new StreamReader(stream)) { string errorDetails = reader.ReadToEnd(); throw new OssServerException(string.Format("{0} HTTP {1} on URI {2}. Optional details: {3}", e.Message, ((HttpWebResponse)e.Response).Method, e.Response.ResponseUri, errorDetails), errorDetails, e); } } catch (Exception e) { throw new OssException("Error communicating with oss server. " + e.Message, e); } return(urlContent); }
private static void SetAuthentication(HttpWebRequest request, AuthRequestParameters authRequestParameters) { if (authRequestParameters.hasSessionToken()) { request.Headers.Add(SESSION_TOKEN_COOKIE_VALUE_KEY, authRequestParameters.getSessionToken()); } else if (authRequestParameters.hasApiKey()) { request.Headers.Add(API_KEY_AUTHENTICATION_BASIC_PREFIX, authRequestParameters.getApiKey()); } else if (authRequestParameters.hasTempToken()) { request.Headers.Add(TEMP_SESSION_TOKEN_COOKIE_VALUE_KEY, authRequestParameters.getTempToken()); } else if (authRequestParameters.hasConnectorsAuth()) { request.Headers.Add(API_KEY_AUTHENTICATION_BASIC_PREFIX, authRequestParameters.getConnectorsAuth()); } }