我正在使用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);
但它仍然显示同样的事情。有什么想法吗?
答案 0 :(得分:4)
事实证明这是网络服务器端的重定向问题,因此与Rest Sharp无关
我已要求删除该问题以避免混淆。
答案 1 :(得分:2)
这是跨域请求吗?如果是这样,那么我怀疑RestSharp在进行实际的HTTP POST之前正在进行CORS预检请求。 " 405不允许的方法"如果不允许跨域POST,则是对CORS请求的正确响应。我不确定该屏幕截图是否显示 all HTTP标头。它是否在GET中发送Access-Control- *标头?这将证实它。