Exemplo n.º 1
0
        public static SearchQueryResult GetResultItem(this HttpRequestResponsePair requestResponsePair)
        {
            SearchQueryResult searchResults;
            var request = requestResponsePair.Item1;

            using (var response = requestResponsePair.Item2)
            {
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    throw new Exception(String.Format("HTTP {0}: {1}", (int)response.StatusCode, response.StatusDescription));
                }

                using (var reader = new StreamReader(response.GetResponseStream()))
                {
                    var content = reader.ReadToEnd();

                    NameValueCollection requestHeaders = new NameValueCollection();
                    foreach (var header in request.Headers.AllKeys)
                    {
                        requestHeaders.Add(header, request.Headers[header]);
                    }

                    NameValueCollection responseHeaders = new NameValueCollection();
                    foreach (var header in response.Headers.AllKeys)
                    {
                        responseHeaders.Add(header, response.Headers[header]);
                    }

                    string requestContent = "";
                    if (request.Method == "POST")
                    {
                        requestContent = requestResponsePair.Item3;
                    }

                    searchResults = new SearchQueryResult
                    {
                        RequestUri          = request.RequestUri,
                        RequestMethod       = request.Method,
                        RequestContent      = requestContent,
                        ContentType         = response.ContentType,
                        ResponseContent     = content,
                        RequestHeaders      = requestHeaders,
                        ResponseHeaders     = responseHeaders,
                        StatusCode          = response.StatusCode,
                        StatusDescription   = response.StatusDescription,
                        HttpProtocolVersion = response.ProtocolVersion.ToString()
                    };

                    searchResults.Process();
                }
            }
            return(searchResults);
        }