コード例 #1
0
 public HttpClientRequest(HttpMethod method, string subQuery)
 {
     Method       = method;
     this.Query   = subQuery;
     Content      = null;
     Deserializer = new AutoResponseDeserializer();
 }
コード例 #2
0
ファイル: HttpSenderAsync.cs プロジェクト: bobahml/TinyClient
        /// <exception cref="InvalidDataException"></exception>
        private IHttpResponse ToResponse(HttpClientRequest request, HttpWebResponse webResponse)
        {
            try
            {
                var responseHeaders = new Dictionary <string, string>();
                foreach (var key in webResponse.Headers.AllKeys)
                {
                    responseHeaders.Add(key, webResponse.Headers.Get(key));
                }
                var responseInfo = new ResponseInfo(webResponse.ResponseUri, responseHeaders.ToArray(), webResponse.StatusCode);

                var stream = webResponse.GetResponseStream();

                if (responseHeaders.ContainsKey(HttpHelper.ContentEncodingHeader))
                {
                    var encodingType = responseHeaders[HttpHelper.ContentEncodingHeader];
                    if (_decoders.ContainsKey(encodingType))
                    {
                        stream = _decoders[encodingType].GetDecodingStream(stream);
                    }
                }

                IResponseDeserializer deserializer;

                if ((int)webResponse.StatusCode < 200 || (int)webResponse.StatusCode >= 300)
                {
                    deserializer = new AutoResponseDeserializer();
                }
                else
                {
                    deserializer = request.Deserializer;
                }

                var deserialized = deserializer.Deserialize(responseInfo, stream);
                return(deserialized);
            }
            catch (Exception e)
            {
                throw new InvalidDataException("Response deserialization error: " + e.Message, e);
            }
        }