首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用StackAPI端点

调用StackAPI端点
EN

Stack Overflow用户
提问于 2017-09-24 17:56:52
回答 1查看 144关注 0票数 0

嗨,我正在编写一个小任务来学习,查询堆栈溢出api,我想实现以下的问题数量,在那一天被问到的问题总数所有问题的视图总数不同(即没有重复)逗号分隔的标签使用的所有问题的日期,按字母顺序排列。

我在下面做了api调用,但这不是我有expected.First的东西,我没有找到api端点从stackexchange获得no.of问题的日期。任何建议都是非常感谢的。

代码语言:javascript
运行
复制
 static void Main()
    {
      Console.WriteLine("Making stackoverflow API Call...");
        using (var client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }))
        {
            client.BaseAddress = new Uri("https://api.stackexchange.com/docs");
           // Int32 unixTimestamp = (Int32) (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1,0,0,0,0))).TotalSeconds;
            var unixStamp = Helper.ConvertToDateTime("2017, 09, 23, 0, 0, 0");
            var response = client.GetAsync("questions?fromdate="+ unixStamp + "&todate="+ unixStamp + "&site=stackoverflow").Result;
            response.EnsureSuccessStatusCode();
            var s = response.Content.ReadAsStringAsync().Result;
            var result = response.Content.ReadAsStringAsync().Result.Count();
            Console.WriteLine("Total no.of questions asked: " + result);
        }
        Console.ReadLine();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-24 18:47:59

首先,您的基本地址应该是https://api.stackexchange.com/2.2。要获得在一天内创建的问题的数量,您必须修改默认的filer以包含total字段。运行以下请求:

nJ7d.eBuocQb(B)

将返回:

代码语言:javascript
运行
复制
{
    "items": [],
    "has_more": false,
    "quota_max": 10000,
    "quota_remaining": 9978,
    "total": 3666
}

对于其他两个要求,您应该创建一个包含所需字段的新筛选器(如果您想处理返回的问题,您可能希望在筛选器中包含更多字段,以避免重复请求)。用于创建see:过滤器/创建自定义过滤器

得到结果后,必须解析返回的JSON字符串(如果要返回XML,就必须解析XML)。您可以使用NewtonsoftDataContractJsonSerializer中的构建(有关更多信息,请参见这里)。

下面是一个在序列化程序中使用构建的示例:

代码语言:javascript
运行
复制
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Threading.Tasks;
using System.Net;
using System.Net.Http;
using System.IO;

[DataContract]
public class Question
{
    // Question members...
}

[DataContract]
public class TotalQuestionsResult
{
    [DataMember(Name = "items")]
    public Question[] Items { get; set; }
    [DataMember(Name = "has_more")]
    public bool HasMore { get; set; }
    [DataMember(Name = "quota_max")]
    public int QuotaMax { get; set; }
    [DataMember(Name = "quota_remaining")]
    public int QuotaRemaining { get; set; }
    [DataMember(Name = "total")]
    public int Total { get; set; }
}

public async Task<int> GetTotalNumberOfQuestions()
{
    // Get the data.
    using (var client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }))
    {
        client.BaseAddress = new Uri("https://api.stackexchange.com/2.2");
        var response = await client.GetAsync("questions?fromdate=1506211200&todate=1506297600&order=desc&sort=creation&site=stackoverflow&filter=!)5IW-5QudQH7_nJ7d.eBuocQb(B)");
        var responseStream = new MemoryStream(await response.Content.ReadAsByteArrayAsync());
        var serializer = new DataContractJsonSerializer(typeof(TotalQuestionsResult));
        var result = (TotalQuestionsResult)serializer.ReadObject(responseStream);

        return result.Total;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46393144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档