Microsoft.Protocols.TestSuites.Common.ChunkedResponse.ParseChunkedResponse C# (CSharp) Méthode

ParseChunkedResponse() public static méthode

The method to parse the chunked response from server.
public static ParseChunkedResponse ( byte rawData ) : ChunkedResponse
rawData byte The response data from the server.
Résultat ChunkedResponse
        public static ChunkedResponse ParseChunkedResponse(byte[] rawData)
        {
            ChunkedResponse response = new ChunkedResponse();
            response.MetaTags = new List<string>();
            response.AdditionHeaders = new Dictionary<string, string>();
            List<byte> responseBodyData = new List<byte>();
            bool isDone = false;
            bool isStartReadBody = false;
            do
            {
                byte[] lineData = ReadLine(ref rawData, isStartReadBody);
                string line = Encoding.ASCII.GetString(lineData);
                if (isDone == false)
                {
                    if (string.Compare(line, "PROCESSING", true) == 0 || string.Compare(line, "PENDING", true) == 0)
                    {
                        response.MetaTags.Add(line);
                    }
                    else if (string.Compare(line, "DONE", true) == 0)
                    {
                        response.MetaTags.Add(line);
                        isDone = true;
                    }
                }
                else
                {
                    if (isStartReadBody == false)
                    {
                        if (line == string.Empty)
                        {
                            isStartReadBody = true;
                        }
                        else
                        {
                            string[] headerkeyAndValue = line.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
                            response.AdditionHeaders.Add(headerkeyAndValue[0], headerkeyAndValue[1]);
                        }
                    }
                    else
                    {
                        responseBodyData.AddRange(lineData);
                    }
                }
            }
            while (rawData.Length > 0);

            response.ResponseBodyRawData = responseBodyData.ToArray();

            return response;
        }

Usage Example

        /// <summary>
        /// This method sends the disconnect request through MAPIHTTP transport to the server.
        /// </summary>
        /// <returns>If the method succeeds, the return value is 0. If the method fails, the return value is an implementation-specific error code.</returns>
        public uint Disconnect()
        {
            uint returnValue = 0;
            DisconnectRequestBody disconnectBody = new DisconnectRequestBody();

            disconnectBody.AuxiliaryBufferSize = 0;
            disconnectBody.AuxiliaryBuffer     = new byte[] { };
            HttpWebResponse response         = SendMAPIHttpRequest(this.site, this.mailStoreUrl, this.userName, this.domain, this.userPassword, disconnectBody, "Disconnect", this.cookies);
            string          transferEncoding = response.Headers["Transfer-Encoding"];
            string          pendingInterval  = response.Headers["X-PendingPeriod"];
            string          responseCode     = response.Headers["X-ResponseCode"];

            if (transferEncoding != null)
            {
                if (string.Compare(transferEncoding, "chunked") == 0)
                {
                    byte[] rawBuffer = ReadHttpResponse(response);

                    if (uint.Parse(responseCode) == 0)
                    {
                        ChunkedResponse chunkedResponse = ChunkedResponse.ParseChunkedResponse(rawBuffer);
                        DisconnectSuccessResponseBody responseSuccess = DisconnectSuccessResponseBody.Parse(chunkedResponse.ResponseBodyRawData);
                        returnValue = responseSuccess.ErrorCode;
                    }
                }
            }

            response.GetResponseStream().Close();
            this.cookies = null;

            return(returnValue);
        }
All Usage Examples Of Microsoft.Protocols.TestSuites.Common.ChunkedResponse::ParseChunkedResponse