2015-04-02 5 views
0

Я пытаюсь удалить конфигурацию, вызвав API-интерфейс Delete. Для моих запросов API я использую Restsharp, потому что он отлично работает с GET и POST.C# Получение ответа 405 с помощью RestSharp Удалить

Теперь у меня есть следующая проблема. Когда я пытаюсь вызвать удаление я получаю ошибки

405 "MethodNotAllowed".

В своем ответе я следующее сообщение:

"метод HTTP не допускается, поддерживаемых методов: GET"

Код snipet:

var client = new RestClient("http://test.de/"); 
var request = new RestRequest("testrules/test"); 
request.Credentials = new NetworkCredential("username", "password"); 
var response = client.Delete(request); 

I также попробовал метод client.Execute() и добавил идентификатор элемента t, который я хочу удалить, чтобы установить более AddParameter() и AddUrlSegment() методов.

Я отслеживал ответ в Fiddler:

DELETE http://test.de/testrules/test HTTP/1.1 
Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml 
User-Agent: RestSharp/105.0.1.0 
Host: test.de 
Content-Length: 0 
Accept-Encoding: gzip, deflate 
Connection: Keep-Alive 

Когда я попытать запрос с Advanced RestClient из Chrome я получаю следующий запрос в Скрипач:

DELETE http://test.de/testrules/test HTTP/1.1 
Host: test.de 
Connection: keep-alive 
Authorization: Basic Q29udGludW91czp0ZXN0 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36 
Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo 
Content-Type: application/json 
Accept: */* 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 

Кто-нибудь знает пример Удалить с помощью RestSharp? Я рассмотрел этот пример из stackoverflow: RestSharp simple complete example и на примерах из документации RestSharp, но ничто из этих примеров не помогло мне.

+0

Является ли сервер REST вашим или третьим лицом? –

+0

Сервер REST не мой. – Schweimi

+0

Конечная точка поддерживает DELETE, потому что я только могу назвать конечную точку с помощью DELETE с помощью RestClient из Chrome. Если я пытаюсь использовать другие утверждения, такие как GET или POST (что еще должно быть?), Это тоже не работает. И в документации написано, что это DELETE. – Schweimi

ответ

0

У вас есть код обслуживания Rest API, который вы можете отправить? Из того, что вы написали, похоже, что клиент restsharp выдает запрос на удаление с использованием ключевого слова HTTP DELETE, в то время как конечная точка Rest API принимает HTTP GET для метода Delete; но без информации о серверном коде трудно сказать.

+0

Нет, у меня нет кода на стороне сервера. Но я знаю, что сервер принимает только удаление. Почему он должен работать с Advanced RestClient? Там я настраиваю delete и когда я вызываю api с restclient, я должен использовать delete, иначе он не будет работать. Я думаю, что проблема с RestSharp. Возможно, у меня что-то настроено неправильно, но я не уверен. – Schweimi

+0

Есть еще одно отличие, которое я вижу в двух запросах - то есть заголовки расширенного RestClient имеют строку авторизации. Может быть, проблема в том, что метод DELETE требует авторизации, а GET - нет? – ofcoursedude

+0

(извините, из сообщения не было ясно, что запрос Advanced RestClient действительно работает) – ofcoursedude