当前位置: 首页 > 知识库问答 >
问题:

不允许使用restcontroller post方法405方法

房唯
2023-03-14

我有一个restcontroller和post方法,带有以下url和json请求。http://server/member/sc/v1/limited-liability/medicare

package com.dckr.microsvc.medicaredtls.controller;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StopWatch;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;


@RestController
public class UpdMedicareDtlsController {

    private static final Logger logger = LoggerFactory.getLogger(UpdMedicareDtlsController.class);

    @Autowired
    private UpdMedicareLLRecService updMedicareLLRecService;

    @Autowired
    ExceptionObjFactory expObjFactory;


    @RequestMapping(value = UpdMedicareLLConstants.UPD_MEDICARE_LL_URL, method = RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public InlineResponse200 updateMedicareLLRec(@RequestBody MedicareRequest updateMedicareRequest, 
            @RequestHeader(value=UpdMedicareLLConstants.META_TRANSID) String metatransid)
            throws Exception {

        long startTime = System.currentTimeMillis();
        logger.info("Entering UpdMedicareDtlsController -- updateMedicareLLRec(@Request MedicareRequest updateMedicareReq)");

        InlineResponse200 response = null;
        StopWatch stopWatch = new StopWatch();
        stopWatch.start();


        logger.info( updateMedicareRequest.toString());

        if(null!=updateMedicareRequest)
        if ((null!=updateMedicareRequest.getMbruid()&&StringUtils.hasText(updateMedicareRequest.getMbruid()))
        &&(null!=updateMedicareRequest.getMedicare()&&null!=updateMedicareRequest.getMedicare().getPrime()
        &&StringUtils.hasText(updateMedicareRequest.getMedicare().getPrime()))
        &&(null!=updateMedicareRequest.getMedicare()&&null!=updateMedicareRequest.getMedicare().getQualifiedReason()
                &&StringUtils.hasText(updateMedicareRequest.getMedicare().getQualifiedReason()))
        &&(null!=updateMedicareRequest.getLlSeqNum()&&StringUtils.hasText(updateMedicareRequest.getLlSeqNum()))
        &&(null!=updateMedicareRequest.getMedicare()&&null!=updateMedicareRequest.getMedicare().getPartA()
                &&null!=updateMedicareRequest.getMedicare().getPartA().getPrimary()
                &&StringUtils.hasText(updateMedicareRequest.getMedicare().getPartA().getPrimary()))
        &&(null!=updateMedicareRequest.getMedicare()&&null!=updateMedicareRequest.getMedicare().getPartB()
        &&null!=updateMedicareRequest.getMedicare().getPartB().getPrimary()
        &&StringUtils.hasText(updateMedicareRequest.getMedicare().getPartB().getPrimary()))) {
            response = updMedicareLLRecService.updateLLRecord(updateMedicareRequest, metatransid);
        } else {
            throw expObjFactory.createNewAppexception("3002", UpdMedicareLLConstants.MISSING_MANDATORY_DATA);
        }
        else {
            throw expObjFactory.createNewAppexception("3002", UpdMedicareLLConstants.MISSING_MANDATORY_DATA);
        }

        stopWatch.stop();

        logger.info("Exiting UpdMedicareDtlsController -- updateMedicareLLRec() time taken : "+ stopWatch.getTotalTimeMillis());
        return response;

    }
}

使用post方法和json请求在本地触发请求时,获得正确的响应。但在docker中以spring boot应用程序的形式运行会将异常作为不允许的方法抛出。最初,我将这个docker服务部署为put方法。现在我转到post方法。如果我把我的方法改回put方法。这很好用。

回复:日期:2018年6月4日星期一09:30:16 GMT内容长度0

允许连接后保持活动X-Application-Context SCUpdate MedicaredTLS:sit服务器nginx/1.13.10

任何人请建议适当的回应。

共有1个答案

商绍元
2023-03-14

运行时jar没有部署与路径和参数相对应的post方法。仔细检查你的部署。

 类似资料:
  • 问题内容: 我打算使用Ajax将跨域请求发送到soap Web服务。Web服务的URL是:http://example1.asmx?op = GetVOD 我的代码: 在IIS 7服务器端,我已经将这些行添加到文件web.config中 当我在Chrome上运行客户端代码时,出现405错误: 有谁知道如何解决这个问题? 预先感谢 问题答案: 听起来像Web DAV正在阻碍。这是删除它的配置: ht

  • 我正在尝试使用angularJs和$http发布一个表单。post方法。但每当我执行此函数时,它都会给我以下错误:加载资源失败:服务器响应状态为405(不允许使用方法),我不知道该怎么办。(Im使用visual studio 2015)

  • 我有一个非常简单的Spring引导应用程序,它由以下代码保护: 这个想法是为了保护“admin”部分。它公开了一个RESTAPI。问题是所有的帖子都被退回了 405方法不允许 如果我从应用程序中删除安全启动器,它就会工作。这让我相信安全配置是问题所在。但我不知道怎么做。

  • 我有以下发帖方法, 我正在使用fiddler发布以下请求, 注意:还没有为spring配置安全性。

  • 问题内容: 我刚刚开始学习Flask,并且我正在尝试创建一种允许POST方法的表单。 这是我的方法: 而我的: 加载表单(在收到GET时将其呈现)可以正常工作。但是,当我单击“ 提交”按钮时,出现一个。 为什么不显示“ Hello”? 问题答案: 除非存在输入错误,否则你的表单将提交给路由方法,除非你输入错误,否则应调整表单的属性以指向视图

  • 问题内容: 我正在开发flask注册表格,但收到错误消息: 码: registration.html: 当我访问时,我收到错误消息。我究竟做错了什么? 问题答案: 这是因为在定义路由时仅允许POST请求。 当你在浏览器中访问时,它将首先执行GET请求。只有提交表单后,浏览器才会执行POST。因此,对于像你这样的自我提交表单,你需要同时处理两者。 使用 应该管用。