Пример #1
0
        public void Write(HttpResponse response)
        {
            StreamWriter writer = new StreamWriter(InputStream);

            Headers.Set("Connection", "Close");
            Headers.Set("Content-Length", response.stream.Length);
            writer.Write("HTTP/1.1 {0} {1}\r\n{2}\r\n\r\n", response.statusCode, response.message, response.headers);
            response.stream.Seek(0, SeekOrigin.Begin);
            StreamReader reader = new StreamReader(response.stream);

            writer.Write(reader.ReadToEnd());
            writer.Flush();
        }
Пример #2
0
        private void WriteBytes(Response response)
        {
            BinaryWriter binWriter = new BinaryWriter(stream);

            headers.Set("Connection", "Close");
            headers.Set("Content-Length", response.stream.Length);
            // ===== Super tricky here =====
            // Note:
            // 1. The header string using BinaryWriter has 1 less line \r\n
            // than when using StreamWriter
            // 2. If we don't convert string to bytes array and write directly
            // it works on other browsers, not Safari
            string headerStr = string.Format("HTTP/1.1 {0} {1}\r\n{2}\r\n",
                                             response.statusCode,
                                             response.message,
                                             response.headers);

            byte[] headerBytes = Encoding.ASCII.GetBytes(headerStr);
            binWriter.Write(headerBytes);

            // write response
            binWriter.Write(response.dataBytes);
            binWriter.Flush();
        }
Пример #3
0
        void WriteHeaders()
        {
            if (Headers.Get("Connection") == null)
            {
                Headers.Set("Connection", "Close");
            }

            // See https://stackoverflow.com/questions/3033771
            const int BUFSIZ = 1024;

            using (var headerWriter = new StreamWriter(OutputStream, HeaderEncoding, BUFSIZ, true))
            {
                headerWriter.Write("HTTP/1.1 {0} {1}\r\n{2}\r\n\r\n",
                                   StatusCode, StatusDescription, Headers);
                // Automatically flushed to the OutputStream
            }
        }