Exemplo n.º 1
0
        /// <summary>
        /// GetBytes
        /// </summary>
        /// <param name="url"></param>
        /// <param name="method"></param>
        /// <param name="formData"></param>
        /// <returns></returns>
        public ByteContent GetBytes(string url, string method, FormData formData)
        {
            ByteContent result = new ByteContent();

            try
            {
                HttpWebRequest request = this.CreateRequest(url, method);
                this.SetFormData(request, formData);
                using (HttpWebResponse response = this.GetResponse(request))
                {
                    using (var responseStream = this.GetResponseStream(response))
                    {
                        using (MemoryStream ms = new MemoryStream())
                        {
                            byte[] buffer   = new byte[8 * 1024];
                            int    count    = 0;
                            long   position = 0;
                            int    trycount = 0;
                            do
                            {
                                count = responseStream.Read(buffer, 0, buffer.Length);
                                if (count > 0)
                                {
                                    ms.Write(buffer, 0, count);
                                    position += count;
                                    trycount  = 0;
                                }
                                else if ((response.ContentLength == 0 || response.ContentLength > position) &&
                                         trycount < 3)
                                {
                                    System.Threading.Thread.Sleep(50);
                                    trycount++;
                                    count = 1;
                                }
                            }while (count > 0);
                            result.Buffer = ms.ToArray();
                        }

                        this.SetContent(response, result);
                    }
                }
            }
            catch (Exception ex)
            {
                result.Error = ex;
            }

            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// GetBytes
        /// </summary>
        /// <param name="url"></param>
        /// <param name="method"></param>
        /// <param name="formData"></param>
        /// <returns></returns>
        public ByteContent GetBytes(string url, string method, FormData formData)
        {
            ByteContent result = new ByteContent();

            try
            {
                HttpWebRequest request = this.CreateRequest(url, method);
                this.SetFormData(request, formData);
                using (HttpWebResponse response = this.GetResponse(request))
                {
                    using (var responseStream = this.GetResponseStream(response))
                    {
                        using (MemoryStream ms = new MemoryStream())
                        {
#if NET20
                            var buffer = new byte[8 * 1024];
                            int count  = 0;
                            while ((count = responseStream.Read(buffer, 0, buffer.Length)) > 0 ||
                                   response.ContentLength > ms.Position)
                            {
                                if (count > 0)
                                {
                                    ms.Write(buffer, 0, count);
                                }
                                else
                                {
                                    System.Threading.Thread.SpinWait(10);
                                }
                            }
#else
                            responseStream.CopyTo(ms);
#endif
                            result.Buffer = ms.ToArray();
                        }

                        this.SetContent(response, result);
                    }
                }
            }
            catch (Exception ex)
            {
                result.Error = ex;
            }

            return(result);
        }