【发布时间】:2014-11-01 00:38:34
【问题描述】:
我有一个RESTful Web Service,它充当 ToDo 任务的存储库。
另一方面,我有一个 Web Application,它使用该 REST 服务器来管理 Todo 存储库。
我已经尝试了从客户端到服务器的第一次调用以检索一些数据,但它失败了。
REST Server中的代码如下:
/**
* A service that manipulates ToDo's in an repository.
*
*/
@Path("/todolist")
public class ToDoWebService {
/**
* The (shared) repository object.
*/
@Inject
ToDoList toDoList;
/**
* A GET /todos request should return the ToDo's repository in JSON.
* @return a JSON representation of the ToDo's repository.
*/
@GET
@Produces(MediaType.APPLICATION_JSON)
public ToDoList getToDoList() {
return toDoList;
}
....
和客户端调用(在AngularJS中):
(function() {
var app = angular.module('toDoApp', []);
var API_URI = "http://localhost:8080/todolist";
....
....
app.controller('addToDoCtrl', ['$scope', '$http', function($scope, $http){
$scope.getToDoList = function() {
$http.get(API_URI).
success(function(data) {
console.log(data);
}).
error(function(data, status, headers, config) {
console.log(status);
console.log(data);
console.log(headers);
console.log(config);
});
};
}]);
....
....
})();
但服务器总是返回 500(内部服务器错误)
这个调用是在你点击web应用的“AddToDo”选项卡时进行的,你可以在控制台看到调用的结果,在这种情况下是错误的。
但最值得注意的是,当我更改 REST Server 代码时:
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getToDoList() {
return "It's me, example text";
}
然后,它会正确返回字符串“It's me, example text”。
我已经检查了包含在 我一遍又一遍地检查了build.gradle 文件和所有server classes 中包含的库,根本找不到任何解决方案。
这是 HTTP 请求-响应的标头,看起来一切正常,当然除了错误:
Remote Address:127.0.0.1:8080
Request URL:http://localhost:8080/todolist
Request Method:GET
Status Code:500 Internal Server Error
**Request Headers**
Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:es-ES,es;q=0.8,en;q=0.6
Connection:keep-alive
Host:localhost:8080
Origin:http://localhost
Referer:http://localhost/
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36
Response Headersview source
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:origin, content-type, accept, authorization
Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS, HEAD
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1209600
Connection:close
Content-Length:0
Date:Fri, 31 Oct 2014 23:45:08 GMT
¿任何可能知道此错误可能来自何处的人?
【问题讨论】:
-
ToDoList类型是如何定义的? -
好的,你得到一个错误500,所以,请显示服务器日志。
-
可能服务器不支持
@Inject的依赖注入。也许调查一下? -
这里是ToDoList类@PM77-1
-
我希望我可以@denisazevedo 但服务器端没有抛出异常
标签: angularjs rest http jax-rs