シミュレーションリクエスト(シミュレーションヘッダgzip解凍汎用)

1694 ワード

private static T GetDataCommonMethod(string url, string host, HeaderData headerData) where T : class
{
    // Host 
    var client = new WebClient();
    var headerStr = $"Host: {host}" + "
" + "User-Agent: ......" + "
" + @"Accept: application/json, text/plain, */*" + "
" + "Accept-Encoding: gzip, deflate" + "
" + "Accept-Language: zh-cn" + "
" + $"Cookie: m={headerData.m}; u={headerData.u}; wx={headerData.wx}; ......" + "
"; var rawHeaders = headerStr.Split(new[] { '
', '\r' }, StringSplitOptions.RemoveEmptyEntries).ToList(); var headerPairs = rawHeaders.Select(x => { var items = x.Split(new[] { ':' }, 2, StringSplitOptions.RemoveEmptyEntries); var key = items[0].Trim(); var value = items[1].Trim(); return new ValueTuple(key, value); }).ToList(); headerPairs.ForEach(x => { client.Headers.Set(x.Item1, x.Item2); }); // gzip string byte[] rawBytes = client.DownloadData(url); var stream = new MemoryStream(rawBytes); GZipStream g = new GZipStream(stream, CompressionMode.Decompress); //gzip var length = BitConverter.ToInt32(rawBytes, rawBytes.Length - 4); byte[] bytes = new byte[length]; g.Read(bytes, 0, bytes.Length); // UTF8 string s0 = System.Text.Encoding.UTF8.GetString(bytes); T result = JsonConvert.DeserializeObject(s0); return result; }