/// <summary> /// Método acionado quando os cabeçalhos da resposta forem recebidos. /// </summary> /// <param name="e"></param> protected virtual void OnResponseHeadersReceived(WebClientResponseHeadersReceivedEventArgs e) { if (ResponseHeadersReceived != null) { ResponseHeadersReceived(this, e); } }
/// <summary> /// Recupera o resultado da requisição. /// </summary> /// <param name="response"></param> /// <returns></returns> private RequestResult GetRequestResult(WebResponse response) { if (response != null) { var webResponse = response as HttpWebResponse; var args = new WebClientResponseHeadersReceivedEventArgs(webResponse); OnResponseHeadersReceived(args); var responseStream = new System.IO.MemoryStream(); if (!args.Cancel) { var buffer = new byte[1024]; var read = 0; var contentLength = webResponse.ContentLength; if (string.Compare(webResponse.ContentEncoding, "gzip", true) == 0) { using (var stream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress)) while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) { responseStream.Write(buffer, 0, read); OnResponseProgressChanged(contentLength, read); } } else if (string.Compare(webResponse.ContentEncoding, "deflate", true) == 0) { using (var stream = new System.IO.Compression.DeflateStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress)) while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) { responseStream.Write(buffer, 0, read); OnResponseProgressChanged(contentLength, read); } } else { using (var stream = response.GetResponseStream()) while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) { responseStream.Write(buffer, 0, read); OnResponseProgressChanged(contentLength, read); } } responseStream.Seek(0, System.IO.SeekOrigin.Begin); } System.Text.Encoding encoding = null; try { if (webResponse.CharacterSet != null && webResponse.CharacterSet != "") { encoding = System.Text.Encoding.GetEncoding(webResponse.CharacterSet); } } catch { } return(new RequestResult(webResponse, webResponse != null ? webResponse.StatusCode : HttpStatusCode.BadRequest, webResponse != null ? webResponse.StatusDescription : "Bad Request", encoding ?? System.Text.Encoding.Default, responseStream)); } else { return(new RequestResult(null, HttpStatusCode.BadRequest, "Bad Request", System.Text.Encoding.Default, null)); } }
/// <summary> /// Método acionado quando os cabeçalhos da requisição forem recebidos. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ClientResponseHeadersReceived(object sender, WebClientResponseHeadersReceivedEventArgs e) { if (e.Response.StatusCode == System.Net.HttpStatusCode.OK) { ReadyState = XMLHttpRequestReadyState.HeadersReceived; } if (ReadyState == XMLHttpRequestReadyState.HeadersReceived) { ReadyState = XMLHttpRequestReadyState.Loading; } }