/// <summary>Tests that retry works with different kind of contents (String, Stream and ByteArray).</summary> private void SubtestSendAsyncRetryContent(ContentType type) { var content = "test-content"; var contentHandler = new ContentMessageHandler(); var configurableHanlder = new ConfigurableMessageHandler(contentHandler) { NumTries = 10 }; configurableHanlder.AddUnsuccessfulResponseHandler(new TrueUnsuccessfulResponseHandler()); using (var client = new HttpClient(configurableHanlder)) { var request = new HttpRequestMessage(HttpMethod.Put, "https://test-unsuccessful-handler"); // set the right content switch (type) { case ContentType.String: request.Content = new StringContent(content); break; case ContentType.Stream: { var stream = new MemoryStream(); var buffer = Encoding.UTF8.GetBytes(content); stream.Write(buffer, 0, buffer.Length); stream.Position = 0; request.Content = new StreamContent(stream); } break; case ContentType.ByteArray: request.Content = new ByteArrayContent(Encoding.UTF8.GetBytes(content)); break; } HttpResponseMessage response = client.SendAsync(request).Result; Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK)); Assert.That(contentHandler.Calls, Is.EqualTo(ContentMessageHandler.NumFails)); Assert.That(contentHandler.ReadContent, Is.EqualTo(content)); } }