BaconographyWP8.PlatformServices.SimpleHttpService.SendPostForCookies C# (CSharp) Method

SendPostForCookies() public method

public SendPostForCookies ( string>.Dictionary urlEncodedData, string uri ) : Task>>
urlEncodedData string>.Dictionary
uri string
return Task>>
        public async Task<Tuple<string, Dictionary<string, string>>> SendPostForCookies(Dictionary<string, string> urlEncodedData, string uri)
        {
			//limit requests to once every 500 milliseconds
			await ThrottleRequests();

			StringBuilder dataBuilder = new StringBuilder();
			var stringData = string.Join("&", urlEncodedData.Select(kvp => string.Format("{0}={1}", kvp.Key, kvp.Value)));
			byte[] data = Encoding.UTF8.GetBytes(stringData);

			HttpWebRequest request = HttpWebRequest.CreateHttp(uri);
            request.AllowReadStreamBuffering = true;
			request.Method = "POST";
			request.UserAgent = "Baconography_Windows_Phone_8_Client/1.0";
			request.ContentType = "application/x-www-form-urlencoded";
			request.ContentLength = data.Length;
			var container = new CookieContainer();
			request.CookieContainer = container;
			//request.CookieContainer.Add(new Uri("http://www.reddit.com", UriKind.Absolute), new Cookie("reddit_session", "", "/", "reddit.com"));

			using (var requestStream = (await GetRequestStreamAsync(request))) { requestStream.Write(data, 0, data.Length); }

			var postResult = await GetResponseAsync(request);

			if (postResult.StatusCode == HttpStatusCode.OK)
			{
                var jsonResult = await (new StreamReader(postResult.GetResponseStream()).ReadToEndAsync());

                container.GetCookies(new Uri("http://www.reddit.com", UriKind.Absolute));
                string loginCookie = "";
                var loginResultThing = JsonConvert.DeserializeObject<LoginJsonThing>(jsonResult);
                if (loginResultThing != null && loginResultThing.Json != null &&
                    (loginResultThing.Json.Errors == null || loginResultThing.Json.Errors.Length == 0))
                {
                    loginCookie = HttpUtility.UrlEncode(loginResultThing.Json.Data.Cookie);
                }
                if (!String.IsNullOrEmpty(loginCookie))
                    return Tuple.Create(jsonResult, new Dictionary<string, string> { { "reddit_session", loginCookie } });
                else
                    return Tuple.Create<string, Dictionary<string, string>>(jsonResult, null);
			}
			else
				throw new Exception(postResult.StatusCode.ToString());
        }