private async Task PostPosterWithoutStream() { // generate a movie poster of 500KB var random = new Random(); var generatedBytes = new byte[524288]; random.NextBytes(generatedBytes); var posterForCreation = new PosterForCreation() { Name = "A new poster for The Big Lebowski", Bytes = generatedBytes }; var serializedPosterForCreation = JsonConvert.SerializeObject(posterForCreation); var request = new HttpRequestMessage(HttpMethod.Post, $"api/movies/d8663e5e-7494-4f81-8739-6e0de1bea7ee/posters"); request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); request.Content = new StringContent(serializedPosterForCreation); request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var response = await _httpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); var createdMovie = JsonConvert.DeserializeObject <Poster>(content); }
private async Task PostPosterWithStream() { // generate a movie poster of 500KB var random = new Random(); var generatedBytes = new byte[524288]; random.NextBytes(generatedBytes); var posterForCreation = new PosterForCreation() { Name = "A new poster for The Big Lebowski", Bytes = generatedBytes }; var memoryContentStream = new MemoryStream(); memoryContentStream.SerializeToJsonAndWrite(posterForCreation, new UTF8Encoding(), 1024, true); //using (var streamWriter = new StreamWriter(memoryContentStream, // new UTF8Encoding(), 1024, true)) //{ // using (var jsonTextWriter = new JsonTextWriter(streamWriter)) // { // var jsonSerializer = new JsonSerializer(); // jsonSerializer.Serialize(jsonTextWriter, posterForCreation); // jsonTextWriter.Flush(); // } //} memoryContentStream.Seek(0, SeekOrigin.Begin); using (var request = new HttpRequestMessage( HttpMethod.Post, $"api/movies/d8663e5e-7494-4f81-8739-6e0de1bea7ee/posters")) { request.Headers.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); using (var streamContent = new StreamContent(memoryContentStream)) { request.Content = streamContent; request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var response = await _httpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var createdContent = await response.Content.ReadAsStringAsync(); var createdPoster = JsonConvert.DeserializeObject <Poster>(createdContent); } } }
private async Task PostAndReadPosterWithStream() { // generate a movie poster of 500KB var random = new Random(); var generatedBytes = new byte[524288]; random.NextBytes(generatedBytes); var posterForCreation = new PosterForCreation() { Name = "A new poster for the Big Lebowski", Bytes = generatedBytes }; var memoryContentStream = new MemoryStream(); memoryContentStream.SerializeToJsonAndWrite(posterForCreation, new UTF8Encoding(), 1024, true); // memorystream set to 0, as its the starting position of the stream memoryContentStream.Seek(0, SeekOrigin.Begin); // since streams needs to be disposed off, scope request via using using (var request = new HttpRequestMessage( HttpMethod.Post, $"api/movies/d8663e5e-7494-4f81-8739-6e0de1bea7ee/posters")) { request.Headers.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); using (var streamContent = new StreamContent(memoryContentStream)) { request.Content = streamContent; request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); using (var response = await _httpClient .SendAsync(request, HttpCompletionOption.ResponseHeadersRead)) { response.EnsureSuccessStatusCode(); var stream = await response.Content.ReadAsStreamAsync(); var poster = stream.ReadAndDeserializeFromJson <Poster>(); } } } }
private async Task PostAndReadPosterWithStream() { //generate a movie poster var random = new Random(); var generatedBytes = new byte[23452]; random.NextBytes(generatedBytes); var posterForCreation = new PosterForCreation() { Name = "A New POster", Bytes = generatedBytes }; //JsonConvert.SerializeObject(posterForCreation); Avoiding this line with streams var memoryContentStream = new MemoryStream(); memoryContentStream.SerializeToJsonAndWrite(posterForCreation); memoryContentStream.Seek(0, SeekOrigin.Begin); using (var request = new HttpRequestMessage(HttpMethod.Post, $"api/movies/d8663e5e-7494-4f81-8739-6e0de1bea7ee/posters")) { request.Headers.Accept.Add( new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); using (var streamContent = new StreamContent(memoryContentStream)) { request.Content = streamContent; request.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); using (var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead)) { response.EnsureSuccessStatusCode(); var stream = await response.Content.ReadAsStreamAsync(); var poster = stream.ReadAndDeserializeFromJson <Poster>(); } } } }
public async Task PostAndReadPosterWithStream() { var random = new Random(); var generateBytes = new byte[524288]; random.NextBytes(generateBytes); var posterForCreation = new PosterForCreation { Name = "A new poster for The Big Lebowski", Bytes = generateBytes }; var memoryContentStream = new MemoryStream(); memoryContentStream.SerializeToJsonAndWrite(posterForCreation, new UTF8Encoding(), 1024, true); memoryContentStream.Seek(0, SeekOrigin.Begin); using (var request = new HttpRequestMessage(HttpMethod.Post, $"api/movies/da2fd609-d754-4feb-8acd-c4f9ff13ba96/posters")) { request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); using (var streamContent = new StreamContent(memoryContentStream)) { request.Content = streamContent; request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); using (var response = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead)) { response.EnsureSuccessStatusCode(); var stream = await response.Content.ReadAsStreamAsync(); var poster = stream.ReadAndDeserializeFromJson <Poster>(); } } } }
private async Task PostPosterWithStreamAndReadWithStream() { // generate a movie poster of 500KB var random = new Random(); var generatedBytes = new byte[524288]; random.NextBytes(generatedBytes); var posterForCreation = new PosterForCreation() { Name = "A new poster for The Big Lebowski", Bytes = generatedBytes }; var ms = new MemoryStream(); ms.SerializeToJsonAndWrite(posterForCreation); ms.Seek(0, SeekOrigin.Begin); using (var request = new HttpRequestMessage(HttpMethod.Post, $"api/movies/d8663e5e-7494-4f81-8739-6e0de1bea7ee/posters")) { request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); using (var streamContent = new StreamContent(ms)) { request.Content = streamContent; request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); using (var response = await _httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead)) { response.EnsureSuccessStatusCode(); var createdContentStream = await response.Content.ReadAsStreamAsync(); var createdPoster = createdContentStream.ReadAndDeserializeFromJson <Poster>(); } } } }
private async Task PostAndReadPosterWithStreams() { // generate a movie poster of 500KB var random = new Random(); var generatedBytes = new byte[524288]; random.NextBytes(generatedBytes); var posterForCreation = new PosterForCreation() { Name = "A new poster for The Big Lebowski", Bytes = generatedBytes }; var memoryContentStream = new MemoryStream(); using (var streamWriter = new StreamWriter(memoryContentStream, new UTF8Encoding(), 1024, true)) { using (var jsonTextWriter = new JsonTextWriter(streamWriter)) { var jsonSerializer = new JsonSerializer(); jsonSerializer.Serialize(jsonTextWriter, posterForCreation); jsonTextWriter.Flush(); } } memoryContentStream.Seek(0, SeekOrigin.Begin); using (var request = new HttpRequestMessage( HttpMethod.Post, $"api/movies/d8663e5e-7494-4f81-8739-6e0de1bea7ee/posters")) { request.Headers.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); using (var streamContent = new StreamContent(memoryContentStream)) { request.Content = streamContent; request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); using (var response = await _httpClient .SendAsync(request, HttpCompletionOption.ResponseHeadersRead)) { response.EnsureSuccessStatusCode(); var stream = await response.Content.ReadAsStreamAsync(); using (var streamReader = new StreamReader(stream)) { using (var jsonTextReader = new JsonTextReader(streamReader)) { var jsonSerializer = new JsonSerializer(); var poster = jsonSerializer.Deserialize <Poster>(jsonTextReader); // do something with the poster } } } } } }