0
我正在做一個HttpWebRequest
到服務器。這是JSON。現在,響應編碼如下:C#HttpWebResponse返回編碼的響應
�\b\0\0\0\0\0\0��A� @ѻ�U�0l�u�\v�v�...
我可以看到我的請求在Fiddler中成功。我可以看到服務器的響應是正確的。但是,在小提琴手中,它也需要我先解碼答案。
我不知道如何解碼這在C#中。
我正在做一個HttpWebRequest
到服務器。這是JSON。現在,響應編碼如下:C#HttpWebResponse返回編碼的響應
�\b\0\0\0\0\0\0��A� @ѻ�U�0l�u�\v�v�...
我可以看到我的請求在Fiddler中成功。我可以看到服務器的響應是正確的。但是,在小提琴手中,它也需要我先解碼答案。
我不知道如何解碼這在C#中。
這裏有一些示例代碼應該完全按照你的意願來做。 BatchCollection在我的情況下是我自己的映射到JSON的對象,所以它可以在解壓縮後映射。
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.Headers = headers;
request.Headers.Add("Content-Encoding", "gzip");
request.AutomaticDecompression = DecompressionMethods.GZip;
request.ContentType = "application/json";
var json = JsonConvert.SerializeObject(batchCollection);
using (Stream requestStream = request.GetRequestStream())
{
var buffer = Encoding.UTF8.GetBytes(json);
using (GZipStream compressionStream = new GZipStream(requestStream, CompressionMode.Compress, true))
{
compressionStream.Write(buffer, 0, buffer.Length);
}
}
var response = (HttpWebResponse)request.GetResponse();
BatchCollection batchOut = null;
using (Stream responseStream = response.GetResponseStream())
{
var reader = new StreamReader(responseStream);
var jsonOut = reader.ReadToEnd();
reader.Close();
batchOut = JsonConvert.DeserializeObject<BatchCollection>(jsonOut);
}
return batchOut;
它是gzip編碼還是你知道編碼是什麼?這很難回答,它就像是「這裏有一堆JSON格式的混亂數據,告訴我如何解碼它」,不知道它是如何編碼的,我們不能說如何解碼它...... –
做你的意思是*編碼*(如UTF-16與UTF-8)或*壓縮*(如gzip)或* encrypted *(爲了安全)?這是一個HTTPS電話嗎? –
是的,你說得對。 Headers.Add(「Accept-Encoding:gzip,deflate」)。它沒有爲安全加密,它可能只是gzip。 – Pmx88