繁体   English   中英

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

[英]When using RestSharp, I am getting MethodNotFound on a POST but the response thinks its a GET?

我正在使用RestSharp并第一次进行POST,我有许多GET请求都可以正常工作)。 Rest Service在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"]

有什么建议我可能在这里做错了吗?

更新:

我下载了提琴手,试图查看发生了什么,当我看标题时,有趣的是,它确实显示了GET。 这是我在提琴手中看到的屏幕截图:

在此处输入图片说明

我什至试图改变:

  client.Execute(request);

  client.Post(request);

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

原来这是Web服务器端的重定向问题,所以与Rest Sharp无关

我已要求删除该问题,以免造成任何混乱。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM