저는 AngularJS에서 며칠 동안 HTTP POST
을 작동 시키려고했습니다. 나는 정말로 당황했고, 나는 어떤 통찰력도 정말로 고맙게 여길 것이다! 서버 측에서는 JAX-RS와 Jersey를 사용하고 있습니다. 전달할 객체는 application/json
이고, Java 클래스 Student
을 생성했습니다 (자세한 내용은 아래 코드를 참조하십시오). 내 목표는 AngularJS에서 서버로 Student
개체를 게시하는 것입니다.Java REST HTTP POST는 말풍선에서 작동하지만 AngularJS에서는 작동하지 않습니다.
내 논리가 서버 측에서 소리가 났는지 확인하기 위해 Google Apps의 REST API 클라이언트와 Unix Command curl을 사용했습니다. 두 가지 방법 모두 HTTP 상태 200을 반환했습니다. 그러나 AngularJS에서 동일한 것을 시도한 경우 HTTP POST
에 데이터가없고 상태 -1이있는 Response
개체가있는 오류가 발생합니다. 게시 요청은 서버에 도달 한 것으로 보이는데 이는 HTTP 상태 204를 출력하기 때문입니다. AngularJS에서 204의 상태 코드를 얻었지만 curl/REST API 클라이언트에서 상태가 200이고 작동하는 이유는 무엇입니까? 정확히.
컨트롤러 정의하고 HTTP를 POST
호출이 포함 된 기능 addAName()
: 다음 HTTP POST
통화를 수락
app.controller('PostingController', function($scope, $http) {
$scope.postMessage='This message is a default message and will change after I click the button and addAName() is called.';
$scope.name='CODER';
$scope.postData = 'Not Available';
$scope.addAName = function(){
var data = {"studentId": 2, "firstName": "Jason", "lastName": "Lee", "specialization": "Student"};
$http.post("http:/localhost:8080/MathAssignment/studentservice/users", data).then(function successCallback(response) {
$scope.postMessage = "POSTING WORKS!";
$scope.postStatus = response.status;
$scope.postData = response.data;
}, function errorCallback(response) {
$scope.postMessage = "POSTING STILL DOES NOT WORK";
$scope.postStatus = response.status;
$scope.postData = response.data;
});
};
});
서버 측 코드 : 아래
내 코드의 관련 부분이다@POST
@Path("/users")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response updateUser(Student inputJsonObj) throws IOException {
int id = (int) inputJsonObj.getStudentId();
String name = (String) inputJsonObj.getFirstName() ;
String profession = (String) inputJsonObj.getSpecialization();
System.err.println("JSON is" + inputJsonObj.toString());
System.err.println("Name is" + name);
return Response.status(200).entity(inputJsonObj).build();
}
Student
클래스 정의 :
public class Student {
private int studentId;
private String firstName;
private String lastName;
private String specialization;
public int getStudentId() {
return studentId;
}
public void setStudentId(int studentId) {
this.studentId = studentId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getSpecialization() {
return specialization;
}
public void setSpecialization(String specialization) {
this.specialization = specialization;
}
}
- 작품 하나 하나하지 않습니다 - 그리고 수동의 차이를 발견 할 수 있는지 : 같은 뭔가. 네트워크 스니퍼 또는 TCPDump가 도움이 될 것입니다. – markspace
빠른 답장을 보내 주셔서 감사합니다. REST 호출이므로 WSDL 파일을 만들지 않았습니다. SOAP/XML 스타일 서비스에만 필요하다고 생각했습니다. 이것은 틀린가? –
아니요. IDE Webstorm을 사용하고 있기 때문에 클라이언트가 localhost : 63342에서 실행 중입니다. 내 서버가 localhost : 8080에서 실행 중입니다. –