Exemplo n.º 1
0
 private Response HandleGet(HttpListenerRequest req)
 {
     if (req.Url.Segments[1].Equals("Process/"))
     {
         Node    cached;
         Request r = Request.GetRequest(req.Url.Segments[2], null, req.Url.Segments[3]);
         try
         {
             using (StreamReader sr = new StreamReader(@"" + path + "/" + r.Filename + ".json"))
             {
                 cached = JsonConvert.DeserializeObject <Node>(sr.ReadToEnd());
             }
         }
         catch
         {
             return(Response.GetErrorResponse());
         }
         Output  o        = new Output(cached);
         JObject response = new JObject();
         response.Add("view", o.CreateView(int.Parse(r.Data)));
         byte[] bytes = Encoding.UTF8.GetBytes(response.ToString());
         return(Response.GetResponse(200, "application/json", bytes));
     }
     else
     {
         return(Response.GetInvalidRequestResponse());
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// 处理http静态页面的请求
        /// </summary>
        /// <param name="rawUrl"></param>
        /// <param name="connSocket"></param>
        private void ProcessStaticPageRequest(string rawUrl, Socket connSocket)
        {
            //拼接屋里路径的字符串,检测当前物理路径的文件是否存在
            //注意Path.Combine()方法中,第二个开始后的参数,开头的/要去掉,否则拼接出来的路径将从后面的
            //以/的字符串开始进行拼接,也就是忽略掉,/前面的拼接路径字符串
            rawUrl = rawUrl.TrimStart('/');
            //完整路径
            string physicalPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "web", rawUrl);

            //判断文件是否存在
            if (File.Exists(physicalPath))
            {
                using (FileStream fs = new FileStream(physicalPath, FileMode.Open))
                {
                    byte[] buffer = new byte[fs.Length];
                    fs.Read(buffer, 0, buffer.Length);
                    //准备发送响应报文
                    string   ext      = Path.GetExtension(rawUrl);
                    Response response = new Response(200, buffer, ext);
                    //发送响应报文,关闭当前socket连接,注意这里体现了http协议的无状态的基本原因
                    connSocket.Send(response.GetResponse());
                    SetLogText(connSocket.RemoteEndPoint + ":已经关闭连接");
                    connSocket.Close();
                }
            }
            else
            {
                //不存在
            }
        }
Exemplo n.º 3
0
        private Response HandlePost(HttpListenerRequest req)
        {
            if (req.RawUrl.Equals("/Process"))
            {
                if (req.HasEntityBody)
                {
                    Request r = null;

                    try
                    {
                        r = GetData(req.InputStream);
                    }
                    catch
                    {
                        return(Response.GetInvalidRequestResponse());
                    }

                    if (Validation.CheckDocument(r.Data, r.Type))
                    {
                        string  id  = Guid.NewGuid().ToString();
                        Process pro = Process.GetProcess(r.Data, r.Type);
                        Node    n   = pro.ProcessDocument();
                        Output  o   = new Output(n); //new output object
                        try
                        {
                            SaveFile(id, n);
                            JObject response = new JObject();
                            response.Add("filename", id);
                            response.Add("grid", o.CreateGrid());
                            response.Add("view", o.CreateView(1));
                            byte[] bytes = Encoding.UTF8.GetBytes(response.ToString());
                            return(Response.GetResponse(200, "application/json", bytes));
                        }
                        catch
                        {
                            return(Response.GetErrorResponse());
                        }
                    }
                }
                return(Response.GetErrorResponse());
            }
            else
            {
                return(Response.GetInvalidRequestResponse());
            }
        }