【问题标题】:When using RestSharp, I am getting MethodNotFound on a POST but the response thinks its a GET?使用 RestSharp 时,我在 POST 上得到 MethodNotFound,但响应认为它是 GET?
【发布时间】:2014-09-30 21:52:04
【问题描述】:

我第一次使用 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。这是我在提琴手中看到的屏幕截图:

我什至试图改变:

  client.Execute(request);

  client.Post(request);

但它仍然显示相同的内容。有什么想法吗?

【问题讨论】:

  • 您是否使用过 fiddler 之类的东西来捕获请求以查看它是否在执行 get 而不是 post?
  • REST 服务是否有同名的 GET 方法?
  • @Ben Robinson - 我尝试使用 Fiddler,它确实将其显示为 GET 。 .鉴于上面的代码,任何线索为什么会发生这种情况?
  • @BenRobinson - 我附上了一个提琴手截图,向你展示我所看到的

标签: c# restsharp methodnotfound


【解决方案1】:

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

我已请求删除该问题以避免任何混淆。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多