示例#1
0
 /// <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);
     }
 }
示例#2
0
 /// <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));
     }
 }
示例#3
0
 /// <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;
     }
 }