RestSharp简单完整示例

114

我一直在尝试创建一个简单的原型Web应用程序,该应用程序使用RestSharp调用Rest API。

我没有找到一个好的例子。 请问有人可以分享并指导我正确的资源吗? 我已经查看了以下内容,但没有提供我所需的完全功能示例:

http://restsharp.org/(没有带有示例的完整应用程序)

http://www.stum.de/2009/12/22/using-restsharp-to-consume-restful-web-services/(似乎已过时)

在原型设计期间,我对下面的代码出现以下错误:

RestResponse response = client.Execute(request);

*Cannot implicitly convert type 'IRestResponse' to 'RestResponse'. An explicit conversion exists (are you missing a cast?)  *

@JohnSheehan 看起来 Twilio 使用的是 HttpClient 而不是 RestSharp。 - tatigo
3个回答

170

Pawel Sawicz .NET博客有一个非常好的解释和示例代码,说明了如何调用这个库;

GET:

var client = new RestClient("192.168.0.1");
var request = new RestRequest("api/item/", Method.GET);
var queryResult = client.Execute<List<Items>>(request).Data;

POST:

var client = new RestClient("http://192.168.0.1");
var request = new RestRequest("api/item/", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddBody(new Item
{
   ItemName = someName,
   Price = 19.99
});
client.Execute(request);

删除:

var item = new Item(){//body};
var client = new RestClient("http://192.168.0.1");
var request = new RestRequest("api/item/{id}", Method.DELETE);
request.AddParameter("id", idItem);
 
client.Execute(request)

RestSharp的GitHub页面在页面中部有非常详尽的示例。要开始使用,请在项目中安装RestSharp NuGet包,然后在代码中包含必要的命名空间引用,然后上面的代码应该可以工作(可能会抵消您需要完整示例应用程序的需求)。

NuGet RestSharp


1
这是缺少参数和头信息。 - Kristina Lex
你的第一个GET示例无法工作:找不到'List <>'的类型或命名空间名称``找不到'Items'的类型或命名空间名称 - Alex G
谢谢,这是一份很棒的快速备忘单 :) - Alexander

27

改变

RestResponse response = client.Execute(request);

IRestResponse response = client.Execute(request);

对我有用。


3
或者 var response = client.Execute(request) as RestResponse; - JohnTube
1
只是为了让通过谷歌搜索到达这里的任何人知道:将类型更改为IRestResponse也有助于类型调用。 IRestResponse <DummyData> typedResponse = client.Execute <DummyData>(request);按预期工作,但RestResponse<DummyData> typedResponse = client.Execute<DummyData>(request);则不起作用。 - mahonya
取决于你所返回的内容。例如在我的情况下,我正在使用 response.Data,因为我正在执行以下操作 var response = Client.Execute<List<Skill>>(request);,其中我返回了 return response.Data;。所以对于我来说,我已经在使用带有 var 的 IRestResponse,因为如果我显式声明,它将是 IRestResponse<List<Skill>> 用于响应 - 否则答案是正确的!只需添加一个注释即可。 - Tom Stickel

26

嗨@pmms,基本上我正在尝试跟随这里的代码http://www.stum.de/2009/12/22/using-restsharp-to-consume-restful-web-services/,但我遇到了我在原始问题中描述的错误。 - Nil Pun
抱歉,无法从公司网络内部访问。稍后我会再试一下。 - pms1969
7
好的,看到这个例子他们使用了"var",而你使用了RestResponse。尝试使用"var"或者IRestResponse。他们还使用了一个通用的Execute方法。 - pms1969
终于有一个不错的例子了,干杯! - user525192
目前来看,这只是一个链接答案。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接