获取错误HTTP状态405用于休息Web服务POST方法

时间:2014-04-14 08:01:16

标签: spring

我在浏览器加载为 localhost:8080 / picking / addPick获取错误HTTP状态405 - 请求方法' GET'不支持。

有什么不对?希望建议谢谢

@Controller
@RequestMapping("/picking")

public class PickerController {

@RequestMapping(method = RequestMethod.GET)
public @ResponseBody ArrayList getAllPickingItems()throws SQLException,      ClassNotFoundException{
//....
}

@RequestMapping(value="/addPick",method=RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public Boolean add(@RequestBody PickingInfo pickingInfo,HttpServletResponse response){
    try{
        Boolean success = pickerMethod.addPickingInfo(pickingInfo);
        response.setHeader("addPickingInfo", success+"");
        return true;
    }catch(Exception ex){
        System.out.println(ex.getMessage());
    }

    return false;
}

}

2 个答案:

答案 0 :(得分:2)

您将URI /picking/addPick限制为POST请求:

@RequestMapping(value="/addPick",method=RequestMethod.POST)

当您尝试从浏览器打开该URI时,您发送的是GET请求,而不是POST。如果您希望能够从浏览器访问/ pick / addPick,您必须:

  • 删除限制method=RequestMethod.POST
  • 明确允许GET请求:method = { RequestMethod.POST, RequestMethod.GET }

如果您只想测试POST方法,请使用SoapUI。只需创建一个“新的REST项目”,粘贴您的服务URI,并发送您想要的任何类型的HTTP请求。

答案 1 :(得分:0)

您已将/ addPick映射到add方法仅用于POST请求。因此GET没有映射到任何东西(在这种情况下,映射获取方法没有意义,因为你也在使用@RequestBody