Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用StackAPI端点_C#_Api_Asp.net Web Api_Stackexchange Api - Fatal编程技术网

C# 调用StackAPI端点

C# 调用StackAPI端点,c#,api,asp.net-web-api,stackexchange-api,C#,Api,Asp.net Web Api,Stackexchange Api,嗨,我正在写一个小任务学习,查询stackoverflow api 我想实现以下目标 ● 当天提出的问题数量 ● 所有问题的视图总数 ● 该日期所有问题中使用的不同(即无重复)逗号分隔标签列表,按字母顺序排列 我已经完成了下面的api调用,但这不是我所期望的。首先,我没有找到api端点,无法从stackexchange api获取日期问题的数量。 任何建议都将不胜感激 static void Main() { Console.WriteLine("Making

嗨,我正在写一个小任务学习,查询stackoverflow api 我想实现以下目标 ● 当天提出的问题数量 ● 所有问题的视图总数 ● 该日期所有问题中使用的不同(即无重复)逗号分隔标签列表,按字母顺序排列

我已经完成了下面的api调用,但这不是我所期望的。首先,我没有找到api端点,无法从stackexchange api获取日期问题的数量。 任何建议都将不胜感激

 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();
    }

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

将返回:

{
    "items": [],
    "has_more": false,
    "quota_max": 10000,
    "quota_remaining": 9978,
    "total": 3666
}
对于其他两个需求,您应该创建一个包含所需字段的新筛选器(如果您希望处理返回的问题,您可能希望在筛选器中包含更多字段,以避免重复请求)。用于创建“请参见:和”

得到结果后,必须解析返回的JSON字符串(如果希望返回XML,则必须解析XML)。您可以使用或内置(有关更多信息,请参阅)

以下是使用内置序列化程序的示例:

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;
    }
}
使用System.Runtime.Serialization;
使用System.Runtime.Serialization.Json;
使用System.Threading.Tasks;
Net系统;
使用System.Net.Http;
使用System.IO;
[数据合同]
公开课问题
{
//问题成员。。。
}
[数据合同]
公共类总体问题结果
{
[DataMember(Name=“items”)]
公共问题[]项{get;set;}
[DataMember(Name=“has_more”)]
公共bool HasMore{get;set;}
[DataMember(Name=“quota_max”)]
公共int QuotaMax{get;set;}
[数据成员(Name=“剩余配额”)]
公共int QuotaRemaining{get;set;}
[DataMember(Name=“total”)]
公共整数总计{get;set;}
}
公共异步任务GetTotalNumber of Questions()
{
//获取数据。
使用(var client=newhttpclient(newhttpclienthandler{AutomaticDecompression=DecompressionMethods.GZip | DecompressionMethods.Deflate}))
{
client.BaseAddress=新Uri(“https://api.stackexchange.com/2.2");
var response=wait client.GetAsync(“问题?fromdate=1506211200&todate=1506297600&order=desc&sort=creation&site=stackoverflow&filter=!)5IW-5QudQH7_nJ7d.eBuocQb(B)”;
var responseStream=newmemoryStream(wait response.Content.ReadAsByteArrayAsync());
var serializer=newdatacontractjsonserializer(typeof(TotalQuestionsResult));
var result=(TotalQuestionsResult)serializer.ReadObject(responseStream);
返回结果。总计;
}
}