コード例 #1
0
 public override void handlePOSTRequest(HttpProcessor p, StreamReader inputData)
 {
     HandleRequest(p, "POST");
 }
コード例 #2
0
 private static void HandleRequest(HttpProcessor p, string method)
 {
     var uri = new Uri(p.http_url);
     var webRequest = WebRequest.Create(uri) as HttpWebRequest;
     if (webRequest != null)
     {
         foreach (var key in p.httpHeaders.Keys)
         {
             var name = key.ToString();
             var value = p.httpHeaders[key].ToString();
             Console.WriteLine(string.Format("{0}:{1}", name, value));
             switch (name)
             {
                 case "Proxy-Connection":
                     if (value == "keep-alive")
                     {
                         webRequest.KeepAlive = true;
                     }
                     break;
                 case "User-Agent":
                     webRequest.UserAgent = value;
                     break;
                 case "Accept":
                     webRequest.Accept = value;
                     break;
                 case "Content-Length":
                     webRequest.ContentLength = long.Parse(value);
                     break;
                 case "Host":
                     break;
                 default:
                     webRequest.Headers.Add(name, value);
                     break;
             }
         }
         webRequest.ContentType = "text/html";
         //"application/x-www-form-urlencoded";
         webRequest.Proxy = new WebProxy();
         webRequest.Method = method;
         var response = webRequest.GetResponse();
         var dataStream = response.GetResponseStream();
         // ReSharper disable once AssignNullToNotNullAttribute
         //var reader = new StreamReader(dataStream);
         // Read the content.
         // var content = reader.ReadToEnd();
         p.writeSuccess();
         //p.outputStream.Write(content);
         dataStream.CopyTo(p.outputStream.BaseStream);
         //reader.Close();
         dataStream.Close();
         response.Close();
     }
 }
コード例 #3
0
        public override void handleGETRequest(HttpProcessor p)
        {
            HandleRequest(p, "GET");
            //if (p.http_url.Equals("/Test.png"))
            //{
            //    Stream fs = File.Open("../../Test.png", FileMode.Open);

            //    p.writeSuccess("image/png");
            //    fs.CopyTo(p.outputStream.BaseStream);
            //    p.outputStream.BaseStream.Flush();
            //}

            //Console.WriteLine("request: {0}", p.http_url);
            //p.writeSuccess();
            //p.outputStream.WriteLine("<html><body><h1>test server</h1>");
            //p.outputStream.WriteLine("Current Time: " + DateTime.Now.ToString());
            //p.outputStream.WriteLine("url : {0}", p.http_url);

            //p.outputStream.WriteLine("<form method=post action=/form>");
            //p.outputStream.WriteLine("<input type=text name=foo value=foovalue>");
            //p.outputStream.WriteLine("<input type=submit name=bar value=barvalue>");
            //p.outputStream.WriteLine("</form>");
        }
コード例 #4
0
 public abstract void handlePOSTRequest(HttpProcessor p, StreamReader inputData);
コード例 #5
0
 public abstract void handleGETRequest(HttpProcessor p);
コード例 #6
0
 public void listen()
 {
     listener = new TcpListener(port);
     listener.Start();
     while (is_active)
     {
         TcpClient s = listener.AcceptTcpClient();
         HttpProcessor processor = new HttpProcessor(s, this);
         Thread thread = new Thread(new ThreadStart(processor.process));
         thread.Start();
         Thread.Sleep(1);
     }
 }