0

WP8 は Gzip 圧縮をサポートしていませんが、それを可能にするサードパーティのライブラリがあります。多くのことを試しましたが、機能させることができません。これは私の最新の試みです:

var handler = new HttpClientHandler();

        if (handler.SupportsAutomaticDecompression)
        {
            handler.AutomaticDecompression = DecompressionMethods.GZip |
                                             DecompressionMethods.Deflate;
        }

        Uri myUri = new Uri("http://www.web.com");

        HttpClient client = new HttpClient(handler);

        client.BaseAddress = myUri;

        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        client.DefaultRequestHeaders.Add("ubq-compression", "gzip");

        HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, myUri);
        req.Content = new StringContent(finalURL, Encoding.UTF8);

        HttpResponseMessage rm = client.SendAsync(req).Result;
        string rst = await rm.Content.ReadAsStringAsync();

APIはバイト配列を返しますが、最初の300はGzipされていませんが、他のすべては

300 バイト以降のすべてを解凍する必要があります。

http://www.nuget.org/packages/Microsoft.Net.Httpを使用しています

// 配列を分割しています byte[] hJ = res.Take(300).ToArray(); byte[] bJ = res.Skip(300).ToArray();

bj は、解凍する必要があるものです。

私はこれを試しています

MemoryStream ストリーム = 新しい MemoryStream(); stream.Write(bj, 0, bj.Length);

                using (var inStream = new MemoryStream(bj)) 
                {
                    var bigStreamsss = new GZipStream(inStream, CompressionMode.Decompress, true);

                    using (var bigStreamOut = new MemoryStream())
                    {
                        bigStreamsss.CopyTo(bigStreamOut);
                        output = Encoding.UTF8.GetString(bigStreamOut.ToArray(), 0, bigStreamOut.ToArray().Length);
                    }

                }

しかし、この行では常に失敗しています " var bigStreamsss = new GZipStream(inStream, CompressionMode.Decompress, true); "

どんな助けでも大歓迎です

4

2 に答える 2