首页 新闻 会员 周边 捐助

C#实现大量数据通过压缩然后进行Post请求?

0
[已解决问题] 解决于 2018-10-18 15:18

C#实现:大量数据通过压缩然后进行Post请求?

有没有现成的例子?

红包答谢;

Coding_Yong的主页 Coding_Yong | 初学一级 | 园豆:6
提问于:2018-10-17 18:40
< >
分享
最佳答案
0

参考 Correct way to compress webapi POST

using (var handler = new HttpClientHandler())
{
    handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
    using (var client = new HttpClient(handler, false))
    {
        string json = JsonConvert.SerializeObject(people);
        byte[] jsonBytes = Encoding.UTF8.GetBytes(json);
        var ms = new MemoryStream();
        using (var gzip = new GZipStream(ms, CompressionMode.Compress, true))
        {
            gzip.Write(jsonBytes, 0, jsonBytes.Length);
        }
        ms.Position = 0;
        var content = new StreamContent(ms);
        content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
        content.Headers.ContentEncoding.Add("gzip");
        var response = await client.PostAsync("http://localhost:54425/api/Gzipping", content);
        var results = await response.Content.ReadAsAsync<IEnumerable<PersonModel>>();
    }
}
奖励园豆:5
dudu | 高人七级 |园豆:29839 | 2018-10-18 09:34

谢谢的你回复,对我很有帮助;
请问下:服务器端该如何接收收Post请求过来的数据?
[HttpPost]
// POST api/<controller>
public string AddPersonList([FromBody]List<Person> personList)
{
return "Ok";
}
我试了这种方式拿不到gzip压缩后的数据! 可否在指点一下

Coding_Yong | 园豆:6 (初学一级) | 2018-10-18 14:02

@Coding_Yong: 参考 ASP.NET Web API Compression ,github 上的对应代码:Fabrik.Common.WebAPI

dudu | 园豆:29839 (高人七级) | 2018-10-19 09:55

@dudu: 赞

Coding_Yong | 园豆:6 (初学一级) | 2018-10-19 10:10
其他回答(1)
0

1.在nuget上安装一些压缩的库,gzip,zip都行。
2.对数据进行压缩。一般会获得一个压缩的内容的流,可能是一个file stream或者memory stream
3.将流读取到byte[],因为在网络上传输流一般都是通过byte[]来体现的。
4.用webClient类的upload方法上传文件,upload方法的参数中有byte[]

其实就是上传文件

wyman25 | 园豆:16 (初学一级) | 2018-10-18 09:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册