SetCookies() public method

public SetCookies ( Uri uri, string cookieHeader ) : void
uri Uri
cookieHeader string
return void
示例#1
0
 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;
             }
         }
     }
 }
示例#2
0
 /// <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;
 }
示例#3
0
 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;
 }
示例#4
0
        // 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;
        }
示例#5
0
        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;
        }
示例#6
0
文件: http.cs 项目: k2775739/GetIWant
        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;
        }
示例#7
0
        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;
            //}
        }
示例#8
0
        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;
        }
示例#9
0
        /// <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);
        }
示例#10
0
        /// <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;
        }
示例#12
0
       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;
        }
示例#14
0
 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;
 }
示例#15
0
        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;
        }
示例#16
0
 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);
 }
示例#17
0
文件: NativeApi.cs 项目: pkmnfrk/busy
        /// <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;
        }
示例#19
0
        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;
        }
示例#20
0
        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);
            }
        }
示例#21
0
 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;
 }
示例#22
0
 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;
 }
示例#23
0
        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;
        }
示例#25
0
        /// <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;

            }

            
        }
示例#26
0
        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);
                }
            }
        }
示例#27
0
        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;
        }
示例#28
0
            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);
            }
示例#29
0
        /// <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;
        }
示例#30
0
        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;
        }
示例#31
0
        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);
 }
示例#33
-1
文件: http.cs 项目: k2775739/GetIWant
        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;
        }