尝试以下方法。
使用 NuGet 并引用 JSON.NET 包。我看到你已经这样做了。
撰写请求并获取响应。
string url = "http://api.stackoverflow.com/1.1/search?intitle=test&order=desc";
var request = (HttpWebRequest) WebRequest.Create(url);
var response = request.GetResponse();
您从 Stack Exchange API 收到的响应已被压缩!您首先需要解压缩它,然后才能读取 JSON 响应。这就是您收到异常的原因。
让我们创建一个方法来完成这个任务。为此,.NET 为我们提供了方便的 GZipStream 类型。
private string ExtractJsonResponse(WebResponse response)
{
string json;
using (var outStream = new MemoryStream())
using (var zipStream = new GZipStream(response.GetResponseStream(),
CompressionMode.Decompress))
{
zipStream.CopyTo(outStream);
outStream.Seek(0, SeekOrigin.Begin);
using (var reader = new StreamReader(outStream, Encoding.UTF8))
{
json = reader.ReadToEnd();
}
}
return json;
}
现在您可以从响应中提取 JSON 数据。
var json = ExtractJsonResponse(response);
现在您可以解析返回的数据。
JObject o = JObject.Parse(json);
int total = (int)o["total"];
PS:我建议您使用今年早些时候发布的 API 2.0 版本。
https://api.stackexchange.com/docs https://api.stackexchange.com/docs