예제 #1
0
            /// <summary>
            /// Initializes a new instance of the ExtensionRequestPacket class
            /// </summary>
            /// <param name="currentContext">Current HTTP Context in use</param>
            public ExtensionRequestPacket(HttpListenerContext currentContext)
            {
                packetContext = currentContext;

                if (string.Compare(packetContext.Request.HttpMethod, "get", StringComparison.OrdinalIgnoreCase) == 0)
                {
                    extensionPacketType = ChromeExtensionPacketType.Get;
                }
                else
                {
                    extensionPacketType = ChromeExtensionPacketType.Post;
                }

                DateTime            readTimeout = DateTime.Now.AddSeconds(10);
                HttpListenerRequest request     = packetContext.Request;
                int length = (int)request.ContentLength64;

                byte[] packetDataBuffer = new byte[length];
                int    totalBytesRead   = request.InputStream.Read(packetDataBuffer, 0, length);

                while (totalBytesRead < length && DateTime.Now <= readTimeout)
                {
                    totalBytesRead += request.InputStream.Read(packetDataBuffer, totalBytesRead, length - totalBytesRead);
                }

                content = Encoding.UTF8.GetString(packetDataBuffer);
            }
        /// <summary>
        /// Initializes a new instance of the ExtensionRequestPacket class
        /// </summary>
        /// <param name="currentContext">Current HTTP Context in use</param>
        public ExtensionRequestPacket(HttpListenerContext currentContext)
        {
            packetContext = currentContext;

            if (string.Compare(packetContext.Request.HttpMethod, "get", StringComparison.OrdinalIgnoreCase) == 0)
            {
                extensionPacketType = ChromeExtensionPacketType.Get;
            }
            else
            {
                extensionPacketType = ChromeExtensionPacketType.Post;
            }

            DateTime readTimeout = DateTime.Now.AddSeconds(10);
            HttpListenerRequest request = packetContext.Request;

            int length = (int)request.ContentLength64;
            byte[] packetDataBuffer = new byte[length];
            int totalBytesRead = 0;

            do
            {
                totalBytesRead += request.InputStream.Read(packetDataBuffer, totalBytesRead, length - totalBytesRead);
            }
            while (totalBytesRead < length && DateTime.Now <= readTimeout);

            content = Encoding.UTF8.GetString(packetDataBuffer);
        }