我试图通过单击“编辑”按钮到Java Web服务从angularjs表单发送intakeanswers.json,但出现错误:“ 405方法不允许”。我的JSON可以吗?

Angular和HTML

<!DOCTYPE html>
<html ng-app="myappp">
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<script src="lib/js/angular.min.js"></script>
<script src="lib/js/angular-route.min.js"></script>


<script src="lib/js/angular-ui-router.min.js"></script>

</head>
<body ng-controller="edit_ctrl">

<script type="text/javascript">
var myapp=angular.module('myappp',[])
myapp.controller('edit_ctrl',function($scope,$http){
$http.get("data/intakeanswers.json").success(function(data){
    $scope.dataJson=data;
    });
$scope.doEdit=function(){
    $scope.dataJs = angular.copy($scope.dataJson);

        var dat=angular.toJson($scope.dataJs);
        alert("hi");
         $http({
             url :    "http://localhost:8080/...../FormAnswers/Answers",
             method: 'POST',
             data : dat,
             headers: {'Content-Type': 'application/Json'},
       })};

});
</script>

<button ng-click="doEdit()">Edit</button>


</body>
 </html>


Java Rest Web服务代码:

@Path("/FormAnswers")
public class FormAnswersService {

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

@GET
@Path("/Answers")
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_JSON)
public String getAnswers(String id) {

    try{

        System.out.println(id);

    }
    catch(Exception e){
        logger.error(e.getMessage());
    }
    return "response";
}


JSON格式

 {
"User_Id": "abcd",
"Form_Name": "Form",
"Answers": [{
                            "Question_Id": "1",
                            "Answer" :"a"
                                            },
                                            {
                            "Question_Id": "2",
                            "Answer" :"b"
                                            },
                                            {
                            "Question_Id": "3",
                            "Answer" :"c"
                                            }
                            ],
            "Section_Name": "Project Overview",
            "Answers": [{
                            "Question_Id": "4",
                            "Answer" :"d"
                                            },
                                            {
                            "Question_Id": "5",
                            "Answer" :"e"
                                            },
                                            {
                            "Question_Id": "6",
                            "Answer" :"f"
                                            }
                            ]

}

最佳答案

您的Web服务控制器仅声明了GET方法的实现。您需要添加对POST的支持:

@POST
@Path("/Answers")
@Consumes(MediaType.APPLICATION_JSON)
public Response setAnswers(String data) {

}


由于您的网络服务不支持POST,因此应为405。

07-24 09:38
查看更多