/// <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); }
/// <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); }