• HttpClient with Stream


    使用Stream的好处

    避免占内存较大的(字符串)中间变量的使用

    实现

    Get

            private async Task GetResourceWithStream(HttpClient httpClient)
            {
                var request = new HttpRequestMessage(HttpMethod.Get,"api/demos/123");
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    
                using var response = await httpClient.SendAsync(request);
                response.EnsureSuccessStatusCode();
    
                using var stream = await response.Content.ReadAsStreamAsync();
                using var streamReader = new StreamReader(stream);
                using var jsonTextReader = new JsonTextReader(streamReader);
                var jsonSeriailzer = new JsonSerializer();
                var demo=jsonSeriailzer.Deserialize<Demo>(jsonTextReader);
            }
    

    Post

            private async Task PostAndReadPosterWithStreams(HttpClient httpClient)
            {
                var random = new Random();
                var generatedBytes = new byte[524288];
                random.NextBytes(generatedBytes);
    
                var demoForCreation = new DemoForCreation()
                {
                    Name = "Test Name",
                    Bytes = generatedBytes
                };
    
                using MemoryStream memoryStream = new MemoryStream();
                using var streamWriter = new StreamWriter(memoryStream, new UTF8Encoding(), 1024, true);
                using var jsonTextWriter = new JsonTextWriter(streamWriter);
                var jsonSerializer = new JsonSerializer();
                jsonSerializer.Serialize(jsonTextWriter,demoForCreation);
                jsonTextWriter.Flush();
    
                memoryStream.Seek(0, SeekOrigin.Begin);
    
                using var request = new HttpRequestMessage(HttpMethod.Post,"api/demos");
                request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                request.Content = new StreamContent(memoryStream);
                request.Content.Headers.ContentType=new MediaTypeHeaderValue("application/json");
    
                var response = await httpClient.SendAsync(request);
                response.EnsureSuccessStatusCode();
                var content = await response.Content.ReadAsStringAsync();
                var demo = JsonConvert.DeserializeObject<Demo>(content);
            }
    
  • 相关阅读:
    在Linux下删除文件及文件夹(rm)
    修改Linux文件权限
    文件分页显示(ls -al |more)
    linux的文件权限
    Linux中的重启(reboot)
    linux关机前同步数据(sync)
    hdu4990 Reading comprehension 矩阵快速幂
    hdu4965 Fast Matrix Calculation 矩阵快速幂
    hdu4847 Wow! Such Doge! KMP
    hdu4705 Y 树形DP
  • 原文地址:https://www.cnblogs.com/Saints/p/12795791.html
Copyright © 2020-2023  润新知