Skip to content

Instantly share code, notes, and snippets.

@darrelmiller
Created January 8, 2014 14:28
Show Gist options
  • Save darrelmiller/8317564 to your computer and use it in GitHub Desktop.
Save darrelmiller/8317564 to your computer and use it in GitHub Desktop.
Demo reading partial content with HttpClient
private static void TestBigDownload(string host)
{
var httpclient = new HttpClient() { BaseAddress = new Uri(host) };
var stream = httpclient.GetStreamAsync("pullbigresource").Result;
var bytes = new byte[10000];
var bytesread = stream.Read(bytes, 0, 1000);
}
[Route("pullbigresource")]
public class PullResourceController : ApiController
{
public HttpResponseMessage Get()
{
var sb = new StringBuilder();
for (int i = 0; i < 10000; i++)
{
sb.Append(i.ToString());
sb.Append(",");
}
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
Action<Stream, HttpContent, TransportContext> gen = (s, httpContent,tc) =>
{
s.Write(buffer,0,2000);
Thread.Sleep(10000);
s.Write(buffer, 2000, buffer.Length - 2000);
};
var content = new PushStreamContent(gen, "text/plain");
content.Headers.ContentLength = buffer.Length;
var response = new HttpResponseMessage()
{
Content = content
};
return response;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment