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); "
どんな助けでも大歓迎です