【问题标题】:Error 405: Request method POST not supported错误 405:不支持请求方法 POST
【发布时间】:2018-04-13 14:31:54
【问题描述】:

最初我调用休息服务的请求对象是:-

public class RequestParamDto {
   private String tokenID;
   private String taxID;
   private String affiliateID;
   private long planID;
   private String participantId;
   private String[] participantIdArr;
}

对应的JSON请求对象是:-

{
   "tokenID": "12356446",
   "taxID": "123456",
   "planID": 123456,
   "affiliateID": "7876675901282905002"
}

我在 POSTMAN CLIENT 的标题部分传递了一些参数-

x-username:abc126
x-enterpriseid:F1111
x-uniqueid:4T5646464
x-ris-audienceview:emplabc
Content-Type:application/json
Accept:application/json

以上请求在 POSTMAN CLIENT 中运行良好。

现在我的请求对象包含自定义对象列表。它看起来像这样:

public class ContributionsRequestParamDto {

  private String tokenID;
  private String taxID;
  private String affiliateID;
  private long planID;
  private String accountNumber;
  private String bankAccountNumber;
  private String transitId;
  private BigDecimal eftAmt;
  private Date ppeDate;
  private String taxYear;
  private Short planType;
  private List<ParticipantsDeferralDto> participantsDeferrals;
  private List<EmployersContributionDto> employersContributions;
}   

其对应的JSON请求对象为:

   {
      "tokenID" : "123456789",
      "taxID" : "123456",
      "affiliateID" : "123456789",
      "planID" : 123456,
      "ppeDate" : "2017-10-24",
      "taxYear" : "2017",
      "planType" : 1,
      "participantsDeferrals" : [ {
        "taxId" : "555555",
        "participantDeferralAmt" : 22.00
      } ],
      "employersContributions" : [ {
        "taxId" : "555555",
        "employerContributionAmt" : 22.00
      } ]
    }

对于上述请求,我在标题部分传递相同的参数。 我收到Error 405: Request method &amp;#39;POST&amp;#39; not supported 错误。我正在尝试使用http://api100.abc.xyz.com:9080/abcd/api/sscws/v1/saveContributions URL 来满足此请求。我是否为这个请求做错了什么或者我错过了什么? 谢谢!

编辑 - 我要调用的 REST 函数是-

@Transactional
@RestController
@RequestMapping("/v1")
@Api(value="v1", description="")
public class SscRestController {
    @RequestMapping(value="/saveContributions", 
            method=RequestMethod.POST, produces={MediaType.APPLICATION_JSON_VALUE}, consumes={MediaType.APPLICATION_JSON_VALUE})
    @ApiOperation(value="Returns the saved contributions object")
    public String saveContributions(@RequestBody ContributionsRequestParam contributionsParam) throws Exception {
        return "success";
    }
}

【问题讨论】:

  • 您能否分享您的请求映射或您用于创建端点的内容?
  • @sfat - 请检查编辑部分中的 REST 端点,如果我在那里做错了什么,请建议我。谢谢!

标签: java json rest postman spring-annotations


【解决方案1】:

405 错误只是表示端点不接受具有指定 Http 方法的请求。在您的情况下,它是 POST。

请验证 REST 端点是否正在侦听具有给定内容类型的 POST 方法。

此错误与 JSON 对象的复杂性无关。

【讨论】:

  • 对于休息端点我已经更新了这个问题。请检查 REST 端点的编辑部分
【解决方案2】:

也许这是一个错字,或者我错了,但你有 ContributionsRequestParamDto 作为你想要接受的 dto,但你的端点方法 saveContributions(..) 将 ContributionsRequestParam 作为 @RequestBody

【讨论】:

  • 这很可能是他遇到的下一个问题。但是现在上层正在以不受支持的方法反弹。接下来,由于您指出的原因,他将收到 400 个错误请求
  • @stejskys - 谢谢,但第一个请求工作正常。对于第一个请求,我也在做同样的事情。我不认为它会起作用,但我会尝试你的解决方案。
  • @stejskys - 您的解决方案不起作用。我试过了
【解决方案3】:

在“ContributionsRequestParamDto.java”中,我已将 ppeDate 声明为日期。我已将其更改为 String,它对我有用。

【讨论】:

    猜你喜欢
    • 2016-06-16
    • 2014-06-10
    • 2023-04-06
    • 2016-08-20
    • 2013-03-30
    • 2017-07-01
    • 1970-01-01
    • 2020-07-24
    • 2017-05-03
    相关资源
    最近更新 更多