Простой полный пример RestSharp [закрыто]

96

Я пытался создать простой прототип веб-приложения, которое использует 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 выглядит так, как будто twillio использует HttpClient или restsharp
tatigo

Ответы:

22

Мне удалось найти сообщение в блоге на эту тему, в котором есть ссылка на проект с открытым исходным кодом, реализующий RestSharp. Надеюсь, что вам поможет.

http://dkdevelopment.net/2010/05/18/dropbox-api-and-restsharp-for-ac-developer/ Сообщение в блоге состоит из двух частей, а проект находится здесь: https://github.com/ dkarzon / DropNet

Это могло бы помочь, если бы у вас был полный пример того, что не работает. Трудно получить контекст о том, как был настроен клиент, если вы не предоставите код.

pms1969
источник
привет @pmms, в основном я пытаюсь следовать коду здесь stum.de/2009/12/22/… но получаю ошибку, которую я описал в своем исходном вопросе выше.
Нил Пун
Извините, не могу связаться с ним из корпоративной сети. Попробую поискать позже.
pms1969
7
Хорошо, посмотрев на пример, они используют «var», вы используете RestResponse. Попробуйте использовать var или IRestResponse. Они также используют общий Execute.
pms1969
Наконец-то достойный пример, ура!
На данный момент это ответ только по ссылке.
Alex
137

В блоге Павла Савича. .NET есть действительно хорошее объяснение и пример кода, объясняющий, как вызвать библиотеку;

ПОЛУЧИТЬ:

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

ПОЧТА:

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 есть довольно исчерпывающий образец на полпути вниз. Чтобы приступить к работе, установите пакет NuGet RestSharp в свой проект, затем включите необходимые ссылки на пространства имен в свой код, после чего приведенный выше код должен работать (возможно, вам не понадобится полный пример приложения).

NuGet RestSharp

Wonea
источник
1
Отсутствуют параметр и заголовки
Кристина Лекс
Ваш первый пример GET не работает:The type or namespace name 'List<>' could not be found The type or namespace name 'Items' could not be found
Alex G
26

Изменение

RestResponse response = client.Execute(request);

к

IRestResponse response = client.Execute(request);

работал у меня.

фрактал
источник
3
илиvar response = client.Execute(request) as RestResponse;
JohnTube
1
просто чтобы позволить любому, кто попадет сюда через поиск Google; переход на IRestResponse также помогает с типизированными вызовами. IRestResponse <DummyData> typedResponse = client.Execute <DummyData> (запрос); работает, как ожидалось, но RestResponse <DummyData> typedResponse = client.Execute <DummyData> (запрос); не.
mahonya
Зависит от того, что вам вернут. например, в моем случае я использую, response.Data потому что я делаю это, и var response = Client.Execute<List<Skill>>(request); я возвращаюсь return response.Data; Итак, для меня я фактически уже использую IRestResponse с var, потому что, если бы я был явным, это было бы IRestResponse<List<Skill>>для ответа - в противном случае ответ правильный! просто добавляю комментарий
Tom Stickel