使用RestSharp的典型http调用如下所示:
var client = new RestClient("http://exampleapi.com");
var request = new RestRequest("someapi", Method.GET);
IRestResponse response = client.Execute(request);
Run Code Online (Sandbox Code Playgroud)
来自https://github.com/restsharp/RestSharp/wiki/Getting-Started上的文档:
如果存在网络传输错误(网络中断,DNS查找失败等),则RestResponse.Status将设置为ResponseStatus.Error,否则将为ResponseStatus.Completed.如果API返回404,则ResponseStatus仍将完成.如果您需要访问返回的HTTP状态代码,您可以在RestResponse.StatusCode中找到它.
此外,以下似乎是RestSharp响应的行为:
response.ErrorException则将填充一些Exception派生类型,response.ErrorMessage并将包含一些消息错误字符串和response.StatusCode将被设置为ResponseStatus.Error,Response.Status.Aborted,ResponseStatus.TimedOut,等.response.StatusCode将设置NotFound等,Response.ErrorException并Response.Error会null与response.StatusCode将被设置为"ResponseStatus.Completed`.我可能错过了一些可能的回应,但我认为要点就在那里.
鉴于此,我应该如何确定响应的成功或失败?选项包括:
ErrorException == null那么检查http响应response.ResponseStatus == ResponseStatus.Completed然后检查Response.StatusCode并根据结果获取响应数据并相应处理,如果不是您期望的ErrorException我不想过分反思这一点,但我假设有一个模式(缺乏更好的术语)来干净利落地处理这个问题.
新手SQL问题在这里 - >
我有一个Occurrences表,每次用户做某事时都会包含一行.用户可以每天多次做这件事.它看起来像这样:
Date Username
------ --------
1/1/9 User1
1/1/9 User1
1/1/9 User2
1/2/9 User1
1/2/9 User3
1/3/9 User1
1/3/9 User1
1/3/9 User1
1/3/9 User2
1/3/9 User3
Run Code Online (Sandbox Code Playgroud)
我想要一个查询只返回用户名和它们出现的唯一天数(数量).对于上面的数据集,我正在寻找的结果是:
Username UniqueDaysAppeared
-------- ------------------
User1 3
User2 2
User3 2
Run Code Online (Sandbox Code Playgroud)
我一直搞砸了,因为我的查询返回的不是每个用户的唯一天数,而是整个用户的出现次数.