При использовании RestSharp я получаю MethodNotFound на POST, но ответ думает, что это GET?
Я использую RestSharp и делаю POST впервые, у меня есть несколько запросов GET, которые все работают нормально). Служба отдыха находится на python, но я не думаю, что это критично для вопроса. Вот мой код:
var client = new RestClient { BaseUrl = _baseUrl };
var request = new RestRequest("nameOfPostMethod", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddBody(new { name, description });
request.AddHeader("accept", "application/json");
var response = client.Execute(request);
Вот грубый ответ, который я получаю:
[{"name": "405 - Method Not Allowed", "data":
[["Class", "werkzeug.exceptions.MethodNotAllowed"], ["Category", "Client Error"],
["Code", "405"], ["Name", "Method Not Allowed"], ["request.method", "GET"],
["request.url", "http://myUrl/nameOfPostMethod"], ["error.message", "405 Method
Not Allowed"], ["error.description", null]]}]
то, что бросается в глаза, это строка, где кажется, что я делаю GET вместо POST:
["request.method", "GET"]
["error.message", "405 Method Not Allowed"]
Любое предложение о том, что я могу делать здесь не так?
ОБНОВИТЬ:
Я скачал fiddler и попытался увидеть, что происходит, и что интересно, когда я смотрю на заголовки, он показывает GET. Вот скриншот того, что я вижу в fiddler:
Я даже пытался изменить:
client.Execute(request);
в
client.Post(request);
но это все еще показывает то же самое. Есть идеи?
2 ответа
Оказывается, это была проблема перенаправления на стороне веб-сервера, так что ничего общего с Rest Sharp
Я попросил удалить вопрос, чтобы избежать путаницы.
Это междоменный запрос? Если это так, то я подозреваю, что RestSharp делает предварительный запрос CORS перед выполнением фактического HTTP POST. "Метод 405 не разрешен" - это правильный ответ на запрос CORS, если междоменный POST не разрешен. Я не уверен, что этот снимок экрана показывает все заголовки HTTP. Отправляет ли он заголовки Access-Control-* в GET? Это подтвердит это.