示例#1
0
        public void TestChunked_WithTrailer()
        {
            var header1 = "HTTP/1.1 200 OK\r\n" +
                          "Date: Mon, 27 Jul 2009 12:28:53 GMT\r\n" +
                          "Server: Apache\r\n" +
                          "Last-Modi";
            var header2 = "fied: Wed, 22 Jul 2009 19:15:56 GMT\r\n" +
                          "Transfer-Encoding: chunked\r\n" +
                          "Content-Type: text/plain\r\n\r\n";
            var body        = "5\r\nABCDE\r\n0\r\n";
            var tailHeader1 = "Header1:Val";
            var tailHeader2 = "ue1\r\nHeader2: Value2\r\n\r\n";
            var parser      = new HttpMessageParser(logger, true);

            Assert.Null(parser.Receive(new ByteArray(header1, Encoding.ASCII)));
            Assert.Null(parser.Receive(new ByteArray(header2, Encoding.ASCII)));
            Assert.Null(parser.Receive(new ByteArray(body, Encoding.ASCII)));
            Assert.Null(parser.Receive(new ByteArray(tailHeader1, Encoding.ASCII)));
            var response = parser.Receive(new ByteArray(tailHeader2, Encoding.ASCII));

            Assert.NotNull(response);
            Assert.Equal("Value1", response.Headers["Header1"]);
            Assert.Equal("Value2", response.Headers["Header2"]);
            Assert.Equal("Apache", response.Headers["Server"]);
            Assert.Equal(body + tailHeader1 + tailHeader2, Encoding.ASCII.GetString(response.BodyData.ReadBytes()));
        }
示例#2
0
        public void TestChunked_ContentLength()
        {
            var header1 = "HTTP/1.1 200 OK\r\n" +
                          "Date: Mon, 27 Jul 2009 12:28:53 GMT\r\n" +
                          "Server: Apache\r\n" +
                          "Last-Modi";
            var header2 = "fied: Wed, 22 Jul 2009 19:15:56 GMT\r\n" +
                          "Content-Length: 5\r\n" +
                          "Content-Type: text/plain\r\n\r\n";
            var body   = "ABCDE";
            var parser = new HttpMessageParser(logger, true);

            Assert.Null(parser.Receive(new ByteArray(header1, Encoding.ASCII)));
            Assert.Null(parser.Receive(new ByteArray(header2, Encoding.ASCII)));
            var response = parser.Receive(new ByteArray(body, Encoding.ASCII));

            Assert.NotNull(response);
            Assert.Equal("Apache", response.Headers["Server"]);
            Assert.Equal(body, Encoding.ASCII.GetString(response.BodyData.ReadBytes()));
        }