使用RestSharp时,我在POST上获得了MethodNotFound,但响应认为它是GET?

时间:2014-09-24 13:21:20

标签: c# restsharp methodnotfound

我正在使用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"]

关于我在这里做错了什么的任何建议?

UPDATE:

我下载了fiddler并尝试了解最新情况,有趣的是当我查看标题时,它确实显示了GET。这是我在fiddler中看到的截图:

enter image description here

我甚至试图改变:

  client.Execute(request);

  client.Post(request);

但它仍然显示同样的事情。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

事实证明这是网络服务器端的重定向问题,因此与Rest Sharp无关

我已要求删除该问题以避免混淆。

答案 1 :(得分:2)

这是跨域请求吗?如果是这样,那么我怀疑RestSharp在进行实际的HTTP POST之前正在进行CORS预检请求。 " 405不允许的方法"如果不允许跨域POST,则是对CORS请求的正确响应。我不确定该屏幕截图是否显示 all HTTP标头。它是否在GET中发送Access-Control- *标头?这将证实它。