我用 Jersey 和 Javax.ws.rs 创建了一个 java webservice,并在我的 Controller 上创建了一个返回 json 对象列表的方法。这是方法>
@Path("chamados")
public class ChamadoController {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/")
public List<Chamado> listChamados(){
Chamado c1 = new Chamado();
c1.setId(50);
c1.setAssunto("assunto1");
c1.setMensagem("oi");
c1.setStatus(Status.NOVO);
Chamado c2 = new Chamado();
c2.setId(20);
c2.setAssunto("assunto2");
c2.setMensagem("oi2");
c2.setStatus(Status.FECHADO);
List<Chamado> list1 = new ArrayList<Chamado>();
list1.add(c1);
list1.add(c2);
return list1;
}
}
当我使用 apache 运行项目并访问/rest/chamados/时的输出是这样的 >
[{"id":50,"assunto":"assunto1","mensagem":"oi","status":"NOVO"},
{"id":20,"assunto":"assunto2","mensagem":"oi2","status":"FECHADO"}]
我的问题是,当我尝试在我的 angular4 项目中打印它时,我以前从未这样做过,所以我有点迷失了,这就是我尝试打印它的方式 >
export class AppComponent{
data: any = {};
constructor(private http: Http){
this.getData();
this.getImages();
}
getData(){
return this.http.get(this.apiURI).map((res: Response) => res.json())
}
getImages(){
this.getData().subscribe(data => {
console.log(data);
})
}
private apiURI = 'http://localhost:8080/aprendendo-java-backend/rest/chamados/';
}
这是我在尝试 console.log 时遇到的错误>
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8080/aprendendo-java-backend/rest/chamados/. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
关于出了什么问题或者我应该如何做的任何提示?
提前致谢
最佳答案
一种可能的解决方案:
看看这个文档:Enabling Cross Origin Requests for a RESTful Web Service
向您的 java 方法添加注释 @CrossOrigin
,如下所示:
@Path("chamados")
@CrossOrigin(origins = "http://localhost:9000")
public class ChamadoController {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/")
public List<Chamado> listChamados(){
Chamado c1 = new Chamado();
c1.setId(50);
c1.setAssunto("assunto1");
c1.setMensagem("oi");
c1.setStatus(Status.NOVO);
Chamado c2 = new Chamado();
c2.setId(20);
c2.setAssunto("assunto2");
c2.setMensagem("oi2");
c2.setStatus(Status.FECHADO);
List<Chamado> list1 = new ArrayList<Chamado>();
list1.add(c1);
list1.add(c2);
return list1;
}
}
将端口号(在我的示例中为 9000 端口)更改为您在 Nodejs 服务器中使用的端口或为您的网页提供服务的 Web 服务器端口。
关于java - 将 java web 服务 json 消费到 Angular 4 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46615019/