private void GatherFile(string ReqFile, string ReqParam, HttpListenerRequest SourceReq) { HttpWebRequest ServerRequest = WebRequest.Create(new Uri("http://gc2.gczero.com/" + ReqFile + "?" + ReqParam)) as HttpWebRequest; for (int i = 0; i < SourceReq.Headers.Count; i++) { string HeaderName_Orig = SourceReq.Headers.Keys[i]; string HeaderValue_Orig = SourceReq.Headers.GetValues(i)[0]; switch (HeaderName_Orig) { case "Accept": ServerRequest.Accept = HeaderValue_Orig; //ServerRequest.Connection = HeaderValue_Orig; break; case "User-Agent": ServerRequest.UserAgent = HeaderValue_Orig; break; case "Accept-Encoding": //ServerRequest.TransferEncoding = HeaderValue_Orig; break; case "Accept-Language": //ServerRequest.a break; case "Host": ServerRequest.Host = HeaderValue_Orig; break; } } var Input = default(byte[]); bool HasContent = false; if (SourceReq.HttpMethod == "POST") { HasContent = true; using (var memstream = new MemoryStream()) { SourceReq.InputStream.CopyTo(memstream); Input = memstream.ToArray(); } } if (HasContent) { ServerRequest.Method = "POST"; ServerRequest.GetRequestStream().Write(Input, 0, Input.Length); } Console.WriteLine("Getting response from game server: " + ReqFile); HttpWebResponse ServerResponse; try { ServerResponse = ServerRequest.GetResponse() as HttpWebResponse; } catch (Exception e) { throw e; } var ServerOutput = default(byte[]); using (var memstream = new MemoryStream()) { ServerResponse.GetResponseStream().CopyTo(memstream); ServerOutput = memstream.ToArray(); } if (ReqFile.Split('/').Length > 0) { string DirectoryData = ""; foreach (string DirName in ReqFile.Split('/')) { if (!DirName.Contains(".")) { if (nonWindows) { DirectoryData += DirName + "/"; } else { DirectoryData += DirName + "\\"; } } if (!Directory.Exists(DirectoryData)) { Console.WriteLine("Creating directory: " + DirectoryData); Directory.CreateDirectory(CacheFolder + DirectoryData); } } } File.WriteAllBytes(CacheFolder + ReqFile, ServerOutput); SpecialTreatment(ReqFile); return; //Console.ReadLine(); }