示例#1
0
        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();
        }