C# 在C中使用StackOverflow检索JSON#
我的问题在代码的注释中是非常简单和自解释的。 使用与StackOverflow不同的url,Json看起来没有问题,但是 从StackOverflow获得的Json,它有一个奇怪的编码形式 这是我的密码:C# 在C中使用StackOverflow检索JSON#,c#,json,streamreader,C#,Json,Streamreader,我的问题在代码的注释中是非常简单和自解释的。 使用与StackOverflow不同的url,Json看起来没有问题,但是 从StackOverflow获得的Json,它有一个奇怪的编码形式 这是我的密码: static void Main(string[] args) { //goodUrl is working in this program and in the browser. string goodUrl = "http://yuml.me
static void Main(string[] args)
{
//goodUrl is working in this program and in the browser.
string goodUrl = "http://yuml.me/23db58a4.json";
//badUrl is not working in this program, but works fine in the browser.
string badUrl = "https://api.stackexchange.com/2.1/me?key=qxtbTbIIEhAZFGO0QOziMA((&site=stackoverflow&order=desc&sort=reputation&access_token=mytoken&filter=!23IiyZnRyYmQ4bPZYWRA1";
HttpWebRequest webRequest = System.Net.WebRequest.Create(badUrl) as HttpWebRequest;
webRequest.Method = "GET";
webRequest.ServicePoint.Expect100Continue = false;
StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
try
{
string str = responseReader.ReadToEnd();
//With Bad-url, "str" ENCODE JSON but with STRANGE ASCII CODE.
Console.Write(str);
Console.Read();
}
//...
}
真正的问题在哪里?我如何解决这个问题?您将得到一个压缩的结果
var stream = webRequest.GetResponse().GetResponseStream();
MemoryStream m = new MemoryStream();
new System.IO.Compression.GZipStream(stream, System.IO.Compression.CompressionMode.Decompress).CopyTo(m);
try
{
string str = Encoding.UTF8.GetString(m.ToArray());
Console.Write(str);
Console.Read();
}
finally
{
........
}
你能举一个“奇怪的编码形式”的例子吗?你可能看到一个gzip响应。我建议你逐行读取响应,而不是ReadToEnd,因为文件可能会很大。@JohnOdom:因为他无论如何都需要解析JOSN,这不会有多大帮助。实际上,他应该将流直接传递给解析器。如果单击该链接,可以看到JSON非常小。奇怪的编码与Json的长度匹配。我得到的是:是的!这对我有用!我得到了一个压缩的结果。非常感谢!