예제 #1
0
        public BaseApiResponse DoPost(string url, Dictionary<string, string> formData)
        {
            var request = (HttpWebRequest)WebRequest.Create(url);

            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";

            request.Accept = "application/json, text/javascript, */*; q=0.01";

            request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";

            string rawFormData = "";

            foreach (var d in formData)
            {
                if (String.IsNullOrEmpty(rawFormData))
                    rawFormData = String.Format("{0}={1}", d.Key, HttpContext.Current.Server.UrlEncode(d.Value));
                else
                    rawFormData += String.Format("&{0}={1}", d.Key, HttpContext.Current.Server.UrlEncode(d.Value));
            }

            request.Method = "POST";

            using (var writer = new StreamWriter(request.GetRequestStream()))
            {
                writer.Write(rawFormData);
            }

            var response = (HttpWebResponse)request.GetResponse();

            BaseApiResponse bAR = new BaseApiResponse();

            //headers
            foreach (var h in response.Headers.AllKeys)
                bAR.Headers.Add(h, response.Headers[h]);

            //cookies
            foreach (Cookie c in response.Cookies)
                bAR.Cookies.Add(c);

            if (bAR.Headers.ContainsKey("Set-Cookie") && !String.IsNullOrEmpty(bAR.Headers["Set-Cookie"]))
            {
                var cc = CookieHelper.GetAllCookiesFromHeader(bAR.Headers["Set-Cookie"], "");

                foreach (Cookie c in cc)
                    bAR.Cookies.Add(c);
            }

            // Get the stream containing content returned by the server.
            Stream dataStream = response.GetResponseStream();

            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader(dataStream);

            // Read the content.
            bAR.Content = reader.ReadToEnd();

            reader.Close();

            dataStream.Close();

            response.Close();

            return bAR;
        }
예제 #2
0
        public BaseApiResponse DoGet(string url, Dictionary<string, string> headers, CookieCollection cookies)
        {
            BaseApiResponse bAR = new BaseApiResponse();

            var request = (HttpWebRequest)WebRequest.Create(url);

            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0";

            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";

            //setting up custom headers
            if (headers != null)
            {
                foreach (var h in headers)
                    try
                    {
                        request.Headers[h.Key] = h.Value;
                    }
                    catch //(Exception ex)
                    {
                    }
            }

            //setting up custom cookies
            if (cookies != null)
            {
                request.CookieContainer = new CookieContainer();
                foreach (Cookie c in cookies)
                    request.CookieContainer.Add(c);
            }

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            //headers
            foreach (var h in response.Headers.AllKeys)
                bAR.Headers.Add(h, response.Headers[h]);

            //cookies
            foreach (Cookie c in response.Cookies)
                bAR.Cookies.Add(c);

            if (bAR.Headers.ContainsKey("Set-Cookie") && !String.IsNullOrEmpty(bAR.Headers["Set-Cookie"]))
            {
                var cc = CookieHelper.GetAllCookiesFromHeader(bAR.Headers["Set-Cookie"], "");

                foreach (Cookie c in cc)
                    bAR.Cookies.Add(c);
            }

            //request headers
            foreach (var h in request.Headers.AllKeys)
                bAR.RequestHeaders.Add(h, request.Headers[h]);

            //request cookies
            //foreach (Cookie c in request.CookieContainer.GetCookies(new Uri("nike.com")))
            //    bAR.RequestCookies.Add(c);

            Stream dataStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(dataStream);

            bAR.Content = reader.ReadToEnd();

            reader.Close();

            dataStream.Close();

            response.Close();

            return bAR;
        }