public override string this[string name] { get { return this.innerCollection[name]; } set { if ((name != "Content-Length") && (name != "Accept-Charset")) { if (name == "Cookie") { if (this.request != null) { CookieContainer container = new CookieContainer(); container.SetCookies(this.request.RequestUri, value); this.request.CookieContainer = container; } else { this.innerCollection[name] = value; } } else { this.innerCollection[name] = value; } } } }
/// <summary> /// Gets the URI cookie container. /// </summary> /// <param name="uri">The URI.</param> /// <returns></returns> internal static CookieContainer GetIECookies(Uri uri) { CookieContainer cookies = null; try { // Determine the size of the cookie int datasize = 8192 * 16; StringBuilder cookieData = new StringBuilder(datasize); if (!InternetGetCookieEx(uri.ToString(), null, cookieData, ref datasize, (uint)InternetFlags.INTERNET_COOKIE_HTTPONLY, IntPtr.Zero)) { if (datasize < 0) return null; // Allocate stringbuilder large enough to hold the cookie cookieData = new StringBuilder(datasize); if (!InternetGetCookieEx( uri.ToString(), null, cookieData, ref datasize, (uint)InternetFlags.INTERNET_COOKIE_HTTPONLY, IntPtr.Zero)) return null; } if (cookieData.Length > 0) { cookies = new CookieContainer(); cookies.SetCookies(uri, cookieData.ToString().Replace(';', ',')); } } catch { } return cookies; }
public int process(CookieContainer cc) { System.Uri uri = null; string url = null; int res; res = pacifica_auth(mycallback); if(res == 0) { string test = System.Text.Encoding.ASCII.GetString(cookiedata); string[] lines = test.Split(new Char[] {'\n', '\r'}); foreach(string lineraw in lines) { string line = lineraw; int cmplen = "URL:".Length; if(line.Length >= cmplen && line.Substring(0, cmplen).ToLower().Equals("URL:".ToLower())) { url = lineraw.Substring(cmplen, lineraw.Length - cmplen).Trim(); uri = new System.Uri(url); continue; } cmplen = "Set-Cookie:".Length; if(line.Length >= cmplen && line.Substring(0, cmplen).ToLower().Equals("Set-Cookie:".ToLower())) { line = lineraw.Substring(cmplen, lineraw.Length - cmplen).Trim(); cc.SetCookies(uri, line); } } } return res; }
// This function returns cookie data based on a uniform resource identifier public static CookieContainer GetUriCookieContainer(Uri uri) { // First, create a null cookie container CookieContainer cookies = null; // Determine the size of the cookie var datasize = 8192 * 16; var cookieData = new StringBuilder(datasize); // Call InternetGetCookieEx from wininet.dll if (!InternetGetCookieEx(uri.ToString(), null, cookieData, ref datasize, InternetCookieHttponly, IntPtr.Zero)) { if (datasize < 0) return null; // Allocate stringbuilder large enough to hold the cookie cookieData = new StringBuilder(datasize); if (!InternetGetCookieEx( uri.ToString(), null, cookieData, ref datasize, InternetCookieHttponly, IntPtr.Zero)) return null; } // If the cookie contains data, add it to the cookie container if (cookieData.Length > 0) { cookies = new CookieContainer(); cookies.SetCookies(uri, cookieData.ToString().Replace(';', ',')); } // Return the cookie container return cookies; }
public static string GetHtml(string URL, string cookie, out string header, string server) { HttpWebRequest httpWebRequest; HttpWebResponse webResponse; Stream getStream; StreamReader streamReader; string getString = ""; httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL); httpWebRequest.Accept = "*/*"; httpWebRequest.Referer = "http://yueche.woiche.com/"; CookieContainer co = new CookieContainer(); co.SetCookies(new Uri(server), cookie); httpWebRequest.CookieContainer = co; httpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)"; httpWebRequest.Method = "GET"; webResponse = (HttpWebResponse)httpWebRequest.GetResponse(); header = webResponse.Headers.ToString(); getStream = webResponse.GetResponseStream(); streamReader = new StreamReader(getStream, Encoding.UTF8); getString = streamReader.ReadToEnd(); streamReader.Close(); getStream.Close(); return getString; }
public static string Gethtml(string URL, string cookie) { HttpWebRequest httpWebRequest; WebResponse wrp; httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL); CookieContainer co = new CookieContainer(); Uri uri = new Uri(URL); co.SetCookies(uri, cookie); httpWebRequest.CookieContainer = co; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; httpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; httpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)"; httpWebRequest.Method = "get"; wrp = (HttpWebResponse)httpWebRequest.GetResponse(); string html = new StreamReader(wrp.GetResponseStream(), Encoding.UTF8).ReadToEnd(); cookie = wrp.Headers.Get("Set-Cookie"); return cookie+"\r\n\r\n\r\n=========================\r\n\r\n\r\n"+html; }
private void SetAuthenticationCookies(HttpClientHandler handler, ClientContext context) { context.Web.EnsureProperty(w => w.Url); //if (context.Credentials is SharePointOnlineCredentials spCred) //{ // handler.Credentials = context.Credentials; // handler.CookieContainer.SetCookies(new Uri(context.Web.Url), spCred.GetAuthenticationCookie(new Uri(context.Web.Url))); //} //else if (context.Credentials == null) //{ var cookieString = CookieReader.GetCookie(context.Web.Url).Replace("; ", ",").Replace(";", ","); var authCookiesContainer = new System.Net.CookieContainer(); // Get FedAuth and rtFa cookies issued by ADFS when accessing claims aware applications. // - or get the EdgeAccessCookie issued by the Web Application Proxy (WAP) when accessing non-claims aware applications (Kerberos). IEnumerable <string> authCookies = null; if (Regex.IsMatch(cookieString, "FedAuth", RegexOptions.IgnoreCase)) { authCookies = cookieString.Split(',').Where(c => c.StartsWith("FedAuth", StringComparison.InvariantCultureIgnoreCase) || c.StartsWith("rtFa", StringComparison.InvariantCultureIgnoreCase)); } else if (Regex.IsMatch(cookieString, "EdgeAccessCookie", RegexOptions.IgnoreCase)) { authCookies = cookieString.Split(',').Where(c => c.StartsWith("EdgeAccessCookie", StringComparison.InvariantCultureIgnoreCase)); } if (authCookies != null) { authCookiesContainer.SetCookies(new Uri(context.Web.Url), string.Join(",", authCookies)); } handler.CookieContainer = authCookiesContainer; //} }
public static byte[] GetHtmlByBytes(string host, string URL, byte[] byteRequest,string cookie, out string header) { long contentLength; // 获取请求返回的内容的长度 HttpWebResponse webResponse; Stream getStream; HttpWebRequest request = WebRequest.Create(URL) as HttpWebRequest; CookieContainer co = new CookieContainer(); co.SetCookies(new Uri(host), cookie); request.CookieContainer = co; InitialHeadInfo(request); request.ContentLength = byteRequest.Length; Stream stream; stream = request.GetRequestStream(); stream.Write(byteRequest, 0, byteRequest.Length); stream.Close(); webResponse = request.GetResponse() as HttpWebResponse; contentLength = webResponse.ContentLength; header = webResponse.Headers.ToString(); getStream = webResponse.GetResponseStream(); byte[] outBytes = new byte[5000]; outBytes = ReadFully(getStream); getStream.Close(); request = null; webResponse = null; return outBytes; }
/// <summary> /// Gets the URI cookie container. /// </summary> /// <param name="uri">The URI.</param> /// <returns></returns> public static System.Net.CookieContainer GetUriCookieContainer(Uri uri) { System.Net.CookieContainer cookies = null; // Determine the size of the cookie int datasize = 8192 * 16; StringBuilder cookieData = new StringBuilder(datasize); if (!InternetGetCookieEx(uri.ToString(), null, cookieData, ref datasize, InternetCookieHttponly, IntPtr.Zero)) { if (datasize < 0) { return(null); } // Allocate stringbuilder large enough to hold the cookie cookieData = new StringBuilder(datasize); if (!InternetGetCookieEx( uri.ToString(), null, cookieData, ref datasize, InternetCookieHttponly, IntPtr.Zero)) { return(null); } } if (cookieData.Length > 0) { cookies = new System.Net.CookieContainer(); cookies.SetCookies(uri, cookieData.ToString().Replace(';', ',')); } return(cookies); }
/// <summary> /// ͬ������HttpRequest /// </summary> /// <param name="cookie"></param> /// <param name="url"></param> /// <param name="postData"></param> /// <returns></returns> public static HttpWebResponse SendHttpPostRequest(Cookie cookie, string url, string postData) { //���https�µ�֤������ HttpRequestCredentialHelper.SetDefaultCredentialValidationLogic(); var request = HttpWebRequest.Create(url) as HttpWebRequest; //������������ΪPOST request.Method = "POST"; //����Post������ if (!string.IsNullOrEmpty(postData)) { request.ContentLength = postData.Length; request.ContentType = "application/x-www-form-urlencoded"; using (var writer = new StreamWriter(request.GetRequestStream())) { writer.Write(postData); writer.Close(); } } //��Cookie�����������÷�����֪����ǰ�û������ var container = new CookieContainer(); request.CookieContainer = container; if (cookie != null) { container.SetCookies(new Uri(Constants.ROOT_URL), string.Format("{0}={1}", cookie.Name, cookie.Value)); var logger = DependencyResolver.Resolve<ILoggerFactory>().Create(typeof(HttpWebRequestHelper)); logger.InfoFormat("HttpWebRequest CookieName:{0}, Value:{1}", cookie.Name, cookie.Value); } return request.GetResponse() as HttpWebResponse; }
public async Task<bool> Login(CancellationToken cancellationToken = default(CancellationToken)) { if (IsLoogedIn) return true; var getConfigJob = ConfigurationService.GetClientConfig(); var credentialsStr = Configuration.Username + ":" + Configuration.Password; var credentials64Str = Convert.ToBase64String(Encoding.UTF8.GetBytes(credentialsStr)); var authUri = new Uri((await getConfigJob).ApiConfig.BaseUrl, _apiUri.Replace("{username}", Configuration.Username)); var authRequest = await CreateRequest(authUri); authRequest.Method = HttpMethod.Post; authRequest.Headers.Authorization = new AuthenticationHeaderValue("Basic", credentials64Str); var response = await SendRequest(authRequest); var cookies = new CookieContainer(); cookies.SetCookies(authUri, String.Join(", ",response.Headers.GetValues("Set-Cookie"))); SessionId = cookies.GetCookies(new Uri("http://gpodder.net"))["sessionid"]; #if DEBUG // if (SessionId != null) //Console.WriteLine("Authenticated"); #endif return true; }
public static CookieContainer GetUriCookieContainer(Uri uri) { CookieContainer l_Cookies = null; // Determine the size of the cookie int l_Datasize = 8192 * 16; StringBuilder l_CookieData = new StringBuilder(l_Datasize); if (!InternetGetCookieEx(uri.ToString(), null, l_CookieData, ref l_Datasize, InternetCookieHttponly, IntPtr.Zero)) { if (l_Datasize < 0) return null; // Allocate stringbuilder large enough to hold the cookie l_CookieData = new StringBuilder(l_Datasize); if (!InternetGetCookieEx(uri.ToString(), null, l_CookieData, ref l_Datasize, InternetCookieHttponly, IntPtr.Zero)) return null; } if (l_CookieData.Length > 0) { l_Cookies = new CookieContainer(); l_Cookies.SetCookies(uri, l_CookieData.ToString().Replace(';', ',')); } return l_Cookies; }
public static CookieContainer ImportCookiesFromIE() { var cookie = new CookieContainer(); string targetUrl; string plusCookie; targetUrl = "https://plus.google.com"; plusCookie = GetProtectedModeIECookieValue(targetUrl).Replace(';', ','); cookie.SetCookies(new Uri(targetUrl), plusCookie); targetUrl = "https://accounts.google.com"; plusCookie = GetProtectedModeIECookieValue(targetUrl).Replace(';', ','); cookie.SetCookies(new Uri(targetUrl), plusCookie); targetUrl = "https://talkgadget.google.com"; plusCookie = GetProtectedModeIECookieValue(targetUrl).Replace(';', ','); cookie.SetCookies(new Uri(targetUrl), plusCookie); return cookie; }
public static CookieContainer GetCookieContainerForUrl(Uri url) { CookieContainer container = new CookieContainer(); string cookieHeaders = RetrieveIECookiesForUrl(url.AbsoluteUri); if (cookieHeaders.Length > 0) { try { container.SetCookies(url, cookieHeaders); } catch (CookieException) { } } return container; }
public static CookieContainer GetUriCookieContainer(Uri uri) { CookieContainer cookies = null; string cookieString = GetCookieString(uri); if (cookieString.Length > 0) { cookies = new CookieContainer(); cookies.SetCookies(uri, cookieString.Replace(';', ',')); } return cookies; }
public static CookieCollection ExtractAuthCookiesFromUrl(string url) { Uri uriBase = new Uri(url); Uri uri = new Uri(uriBase, "/"); // call WinInet.dll to get cookie. string stringCookie = CookieReader.GetCookie(uri.ToString()); if (string.IsNullOrEmpty(stringCookie)) return null; stringCookie = stringCookie.Replace("; ", ",").Replace(";", ","); // use CookieContainer to parse the string cookie to CookieCollection CookieContainer cookieContainer = new CookieContainer(); cookieContainer.SetCookies(uri, stringCookie); return cookieContainer.GetCookies(uri); }
/// <summary> /// Gets the URI cookie container. /// </summary> /// <param name="uri">The URI.</param> /// <returns></returns> public static CookieContainer GetUriCookieContainer(Uri uri) { CookieContainer cookies = null; // Determine the size of the cookie string cookieData = GetUriCookies(uri); if (cookieData.Length > 0) { cookies = new CookieContainer(); cookies.SetCookies(uri, cookieData.Replace(';', ',')); } return cookies; }
/// <remarks>https://stackoverflow.com/questions/14681144/httpclient-not-storing-cookies-in-cookiecontainer</remarks> public static CookieContainer ReadCookies(this HttpResponseMessage response) { var pageUri = response.RequestMessage.RequestUri; var cookieContainer = new CookieContainer(); IEnumerable<string> cookies; if (response.Headers.TryGetValues("set-cookie", out cookies)) { foreach (var c in cookies) { cookieContainer.SetCookies(pageUri, c); } } return cookieContainer; }
public static CookieContainer GetUriCookieContainer(Uri uri) { CookieContainer cookies = null; int datasize = 256; StringBuilder cookieData = new StringBuilder(datasize); if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize)) { if (datasize <= 0) return null; cookieData = new StringBuilder(datasize); if (!InternetGetCookie(uri.ToString(), null, cookieData, ref datasize)) return null; } if (cookieData.Length > 0) { cookies = new CookieContainer(); cookies.SetCookies(uri, cookieData.ToString().Replace(';', ',')); } return cookies; }
public LaunchData Launch(string launchUrl, string launchToken) { this.launchToken = launchToken; this.launchUrl = launchUrl; client = new HttpClient(); HttpResponseMessage responseMessage = null; var _launchData = new LaunchData(); try { responseMessage = client.PostAsync(launchUrl + "launch/" + launchToken, null).Result; } catch (Exception e) { _launchData.response = e.Message; } if (responseMessage != null) { string responseText = responseMessage.Content.ReadAsStringAsync().Result; var status = responseMessage.StatusCode; string cookies = responseMessage.Headers.GetValues("set-cookie").ElementAt(0); var cookieParser = new System.Net.CookieContainer(); cookieParser.SetCookies(new Uri(launchUrl), cookies); CookieCollection parsedCookies = cookieParser.GetCookies(new Uri(launchUrl)); this.cookie = parsedCookies["connect.sid"]; try { LaunchData jsonResponse = JsonConvert.DeserializeObject <LaunchData>(responseText); _launchData = jsonResponse; } catch (Exception e) { _launchData.response = responseText; } this.launchData = _launchData; return(_launchData); } else { this.launchData = _launchData; return(_launchData); } }
internal static CookieContainer GetCookieContainerFromString(Uri url, string cookieHeaders) { CookieContainer container = new CookieContainer(); if (cookieHeaders != null && cookieHeaders.Length > 0) { try { container.SetCookies(url, cookieHeaders); } catch (CookieException) { //we might get an error on malformed cookies //_log.Error( // String.Format("GetCookieContainerUri() exception parsing '{0}' for url '{1}'", cookieHeaders, // url.AbsoluteUri), ce); } } return container; }
public static CookieContainer GetUriCookieContainer(Uri uri) { CookieContainer cookies = null; //定义Cookie数据的大小。 int datasize = 256; StringBuilder cookieData = new StringBuilder(datasize); if (!InternetGetCookie(uri.ToString(), ".ASPXAUTH", cookieData, ref datasize)) { if (datasize < 0) return null; // 确信有足够大的空间来容纳Cookie数据。 cookieData = new StringBuilder(datasize); if (!InternetGetCookie(uri.ToString(), ".ASPXAUTH", cookieData, ref datasize)) return null; } if (cookieData.Length > 0) { cookies = new CookieContainer(); cookies.SetCookies(uri, cookieData.ToString().Replace(';', ',')); } return cookies; }
private void DownloadFromWeb(string fileName) { if (!new FileInfo(GetFilePath(fileName)).Exists) { string url = "http://www.hoge.com/images/test.gif"; HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url); //If Must Cookie for Downloading. CookieContainer cookie = new CookieContainer(); cookie.SetCookies(new Uri(url), "cookieKey=12345;"); fileReq.CookieContainer = cookie; HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse(); Stream stream = fileResp.GetResponseStream(); byte[] readBuffer = new byte[BUFFER_SIZE]; MemoryStream memoryStream = new MemoryStream(); while (true) { int readByte = stream.Read(readBuffer, 0, readBuffer.Length); if (readByte > 0) { memoryStream.Write(readBuffer, 0, readByte); } else { break; } } byte[] writeBuffer = new byte[memoryStream.Length]; memoryStream.Seek(0, SeekOrigin.Begin); memoryStream.Read(writeBuffer, 0, writeBuffer.Length); WriteFileLocalStrage(fileName, writeBuffer); } }
public static string ProcessResponseCookies(HttpResponseMessage response, Func<CookieContainer, string> sessionValueGetter) { IEnumerable<string> cookies = null; if (response.Headers.TryGetValues("Set-Cookie", out cookies)) { foreach (var item in cookies) { if (!string.IsNullOrWhiteSpace(item)) { try { var requestUri = response.RequestMessage.RequestUri; var temporaryCookieContainer = new CookieContainer(); temporaryCookieContainer.SetCookies(requestUri, item); var sessionValue = sessionValueGetter(temporaryCookieContainer); if (sessionValue != null) return sessionValue; } catch (Exception) { } } } } return null; }
/// <summary> /// No SPO client API for administering user profiles, so need to use traditional ASMX service for user profile work. This function initiates the /// web service end point, and authenticates using Office 365 auth ticket. Use SharePointOnlineCredentials to assist with this auth. /// </summary> /// <returns></returns> static bool InitializeWebService() { try { string webServiceExt = "_vti_bin/userprofileservice.asmx"; string adminWebServiceUrl = string.Empty; //append the web service (ASMX) url onto the admin web site URL if (_profileSiteUrl.EndsWith("/")) adminWebServiceUrl = _profileSiteUrl + webServiceExt; else adminWebServiceUrl = _profileSiteUrl + "/" + webServiceExt; LogMessage("Initializing SPO web service " + adminWebServiceUrl, LogLevel.Information); //get secure password from clear text password SecureString securePassword = GetSecurePassword(_sPoAuthPasword); //get credentials from SP Client API, used later to extract auth cookie, so can replay to web services SharePointOnlineCredentials onlineCred = new SharePointOnlineCredentials(_sPoAuthUserName, securePassword); // Get the authentication cookie by passing the url of the admin web site string authCookie = onlineCred.GetAuthenticationCookie(new Uri(_profileSiteUrl)); // Create a CookieContainer to authenticate against the web service CookieContainer authContainer = new CookieContainer(); // Put the authenticationCookie string in the container authContainer.SetCookies(new Uri(_profileSiteUrl), authCookie); // Setting up the user profile web service _userProfileService = new UPSvc.UserProfileService(); // assign the correct url to the admin profile web service _userProfileService.Url = adminWebServiceUrl; // Assign previously created auth container to admin profile web service _userProfileService.CookieContainer = authContainer; // LogMessage("Finished creating service object for SPO Web Service " + adminWebServiceUrl, LogLevel.Information); return true; } catch (Exception ex) { LogMessage("Error initiating connection to profile web service in SPO " + ex.Message, LogLevel.Error); return false; } }
async Task ReadHeadersAsync(HttpReader httpReader, Uri url, CookieContainer cookies, CancellationToken cancellationToken) { for (; ; ) { var nameValue = await httpReader.ReadHeaderAsync(cancellationToken).ConfigureAwait(false); if (null == nameValue) break; _headers.Add(nameValue); var value = nameValue.Item2; if (string.IsNullOrEmpty(value)) continue; var name = nameValue.Item1; if (string.Equals(name, "Content-Length", StringComparison.OrdinalIgnoreCase)) { long n; if (long.TryParse(value, NumberStyles.Integer, NumberFormatInfo.InvariantInfo, out n)) _httpStatus.ContentLength = n; } else if (string.Equals(name, "Transfer-Encoding", StringComparison.OrdinalIgnoreCase)) { var semicolon = value.IndexOf(';'); var token = semicolon > 1 ? value.Substring(0, semicolon).Trim() : value; if (string.Equals(token, "chunked", StringComparison.OrdinalIgnoreCase)) _httpStatus.ChunkedEncoding = true; } else if (null != cookies && (string.Equals(name, "Set-Cookie", StringComparison.OrdinalIgnoreCase) || string.Equals(name, "Set-Cookie2", StringComparison.OrdinalIgnoreCase))) { cookies.SetCookies(url, value); } } }
private async Task<WebClientByteResult> Run(WebRequest request) { var cookies = new CookieContainer(); if (!string.IsNullOrEmpty(request.Cookies)) { var uri = new Uri(request.Url); foreach (var c in request.Cookies.Split(';')) { try { cookies.SetCookies(uri, c); } catch (CookieException ex) { logger.Info("(Non-critical) Problem loading cookie {0}, {1}, {2}", uri, c, ex.Message); } } } var client = new HttpClient(new HttpClientHandler { CookieContainer = cookies, AllowAutoRedirect = false, // Do not use this - Bugs ahoy! Lost cookies and more. UseCookies = true, }); client.DefaultRequestHeaders.Add("User-Agent", BrowserUtil.ChromeUserAgent); HttpResponseMessage response = null; if (request.Type == RequestType.POST) { var content = new FormUrlEncodedContent(request.PostData); response = await client.PostAsync(request.Url, content); } else { response = await client.GetAsync(request.Url); } var result = new WebClientByteResult(); result.Content = await response.Content.ReadAsByteArrayAsync(); if (response.Headers.Location != null) { result.RedirectingTo = response.Headers.Location.ToString(); } result.Status = response.StatusCode; // Compatiblity issue between the cookie format and httpclient // Pull it out manually ignoring the expiry date then set it manually // http://stackoverflow.com/questions/14681144/httpclient-not-storing-cookies-in-cookiecontainer IEnumerable<string> cookieHeaders; if (response.Headers.TryGetValues("set-cookie", out cookieHeaders)) { var cookieBuilder = new StringBuilder(); foreach (var c in cookieHeaders) { cookieBuilder.AppendFormat("{0} ", c.Substring(0, c.IndexOf(';')+1)); } result.Cookies = cookieBuilder.ToString().TrimEnd(); } ServerUtil.ResureRedirectIsFullyQualified(request, result); return result; }
public RequestState(IRequest request, IDictionary<String, String> headers) { var cookieHeader = request.Headers.GetOrDefault(HeaderNames.Cookie, String.Empty); _cookies = new CookieContainer(); _request = request; _http = WebRequest.Create(request.Address) as HttpWebRequest; _http.CookieContainer = _cookies; _http.Method = request.Method.ToString().ToUpperInvariant(); _buffer = new Byte[BufferSize]; _completed = new TaskCompletionSource<Boolean>(); foreach (var header in headers) AddHeader(header.Key, header.Value); foreach (var header in request.Headers) AddHeader(header.Key, header.Value); _cookies.SetCookies(_http.RequestUri, cookieHeader); }
/// <summary> /// Gets the UserProfileService proxy to enable calls to the UPA web service. /// </summary> /// <param name="tenant"></param> /// <returns>UserProfileService web service client</returns> public static UserProfileService GetUserProfileServiceClient(this Tenant tenant) { var client = new UserProfileService(); client.Url = tenant.Context.Url + "/_vti_bin/UserProfileService.asmx"; client.UseDefaultCredentials = false; client.Credentials = tenant.Context.Credentials; if (tenant.Context.Credentials is SharePointOnlineCredentials) { var creds = (SharePointOnlineCredentials)tenant.Context.Credentials; var authCookie = creds.GetAuthenticationCookie(new Uri(tenant.Context.Url)); var cookieContainer = new CookieContainer(); cookieContainer.SetCookies(new Uri(tenant.Context.Url), authCookie); client.CookieContainer = cookieContainer; } return client; }
private async Task<WebClientByteResult> Run(WebRequest webRequest) { var cookies = new CookieContainer(); if (!string.IsNullOrEmpty(webRequest.Cookies)) { var uri = new Uri(webRequest.Url); foreach (var c in webRequest.Cookies.Split(';')) { try { cookies.SetCookies(uri, c); } catch (CookieException ex) { logger.Info("(Non-critical) Problem loading cookie {0}, {1}, {2}", uri, c, ex.Message); } } } var client = new HttpClient(new HttpClientHandler { CookieContainer = cookies, AllowAutoRedirect = false, // Do not use this - Bugs ahoy! Lost cookies and more. UseCookies = true, }); if(webRequest.EmulateBrowser) client.DefaultRequestHeaders.Add("User-Agent", BrowserUtil.ChromeUserAgent); else client.DefaultRequestHeaders.Add("User-Agent", "Jackett/" + configService.GetVersion()); HttpResponseMessage response = null; var request = new HttpRequestMessage(); request.Headers.ExpectContinue = false; request.RequestUri = new Uri(webRequest.Url); if (webRequest.Headers != null) { foreach (var header in webRequest.Headers) { if (header.Key != "Content-Type") { request.Headers.Add(header.Key, header.Value); } } } if (!string.IsNullOrEmpty(webRequest.RawBody)) { var type = webRequest.Headers.Where(h => h.Key == "Content-Type").Cast<KeyValuePair<string,string>?>().FirstOrDefault(); if (type.HasValue) { var str = new StringContent(webRequest.RawBody); str.Headers.Remove("Content-Type"); str.Headers.Add("Content-Type", type.Value.Value); request.Content = str; } else request.Content = new StringContent(webRequest.RawBody); request.Method = HttpMethod.Post; } else if (webRequest.Type == RequestType.POST) { request.Content = new FormUrlEncodedContent(webRequest.PostData); request.Method = HttpMethod.Post; } else { request.Method = HttpMethod.Get; } response = await client.SendAsync(request); var result = new WebClientByteResult(); result.Content = await response.Content.ReadAsByteArrayAsync(); if (response.Headers.Location != null) { result.RedirectingTo = response.Headers.Location.ToString(); } result.Status = response.StatusCode; // Compatiblity issue between the cookie format and httpclient // Pull it out manually ignoring the expiry date then set it manually // http://stackoverflow.com/questions/14681144/httpclient-not-storing-cookies-in-cookiecontainer IEnumerable<string> cookieHeaders; var responseCookies = new List<Tuple<string, string>>(); if (response.Headers.TryGetValues("set-cookie", out cookieHeaders)) { foreach (var value in cookieHeaders) { var nameSplit = value.IndexOf('='); if (nameSplit > -1) { responseCookies.Add(new Tuple<string, string>(value.Substring(0, nameSplit), value.Substring(0, value.IndexOf(';') + 1))); } } var cookieBuilder = new StringBuilder(); foreach (var cookieGroup in responseCookies.GroupBy(c => c.Item1)) { cookieBuilder.AppendFormat("{0} ", cookieGroup.Last().Item2); } result.Cookies = cookieBuilder.ToString().Trim(); } ServerUtil.ResureRedirectIsFullyQualified(webRequest, result); return result; }
private WebHeaderCollection ProcessHeaderStream(HttpRequest request, CookieContainer cookies, Stream headerStream) { headerStream.Position = 0; var headerData = headerStream.ToBytes(); var headerString = Encoding.ASCII.GetString(headerData); var webHeaderCollection = new WebHeaderCollection(); // following a redirect we could have two sets of headers, so only process the last one foreach (var header in headerString.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Reverse()) { if (!header.Contains(":")) break; webHeaderCollection.Add(header); } var setCookie = webHeaderCollection.Get("Set-Cookie"); if (setCookie != null && setCookie.Length > 0 && cookies != null) { try { cookies.SetCookies((Uri)request.Url, FixSetCookieHeader(setCookie)); } catch (CookieException ex) { _logger.Debug("Rejected cookie {0}: {1}", ex.InnerException.Message, setCookie); } } return webHeaderCollection; }
private CookieCollection ParseCookies(Uri uri, string setCookieHeader) { if (NetEventSource.IsEnabled) NetEventSource.Info(this, "uri:" + uri + " setCookieHeader:" + setCookieHeader); CookieContainer container = new CookieContainer(); container.SetCookies(uri, setCookieHeader); return container.GetCookies(uri); }
public static string Logingethtml( string URL, byte[] byteRequest, string cookie,string refer,out string header) { long contentLength; HttpWebRequest httpWebRequest; HttpWebResponse webResponse; Stream getStream; httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL); CookieContainer co = new CookieContainer(); Uri uri = new Uri(URL); co.SetCookies(uri, cookie); httpWebRequest.CookieContainer = co; httpWebRequest.ContentType = "application/x-www-form-urlencoded"; httpWebRequest.Accept ="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8;"; httpWebRequest.Referer = refer; httpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)"; httpWebRequest.Method = "Post"; httpWebRequest.ContentLength = byteRequest.Length; Stream stream; stream = httpWebRequest.GetRequestStream(); stream.Write(byteRequest, 0, byteRequest.Length); stream.Close(); webResponse = (HttpWebResponse)httpWebRequest.GetResponse(); header = webResponse.Headers.ToString(); getStream = webResponse.GetResponseStream(); contentLength = webResponse.ContentLength; string html = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd(); getStream.Close(); return html; }