泽西岛Restservice:传递json时不会调用有角度的http发布请求

时间:2019-08-08 11:43:33

标签: angular rest jersey httprequest

我目前正在使用Angular和Jersey Restservice来处理http请求。
Restservice在9090端口上运行
我在jersey restservice中的POST路线如下:

    @Path("/test")
    public class ResourceService {

    @POST
        @Path("label")
        @Consumes({ "application/json" })
        @Produces(MediaType.APPLICATION_JSON)
        public Response label(String param) {
            System.out.println("called");
            System.out.println(param);
            // do anything...
    }
}

我的Http请求本身呈角度形式:

private baseUrl: string = "http://localhost:9090"
    getLabels():Observable<any> {
        var tempObj= {
          "a":"aa",
          "b":"bb",
          "c":"cc",
          "d":"dd"
        };
        return this.http.post(this.baseUrl+"/test/label",tempObj).pipe(
          catchError(this.handleError)
        );
      }

当我执行包含JSON的Post请求时,label方法永远不会被调用,并且在web-develop-console中出现以下错误

Access to XMLHttpRequest at 'http://localhost:9090/test/label' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

但是,当我传递null而不是tempObj时,Post Request似乎是正确的,并且调用了我的rest服务上的方法。为什么我的休息服务不接受有效的json?

Edit:在其余服务中将“ application / json”更改为“ text / plain”并传递有角度的JSON.stringify而不是Object时,它也将正常工作。似乎“ application / json”有问题?我必须在某个地方启用它吗?

0 个答案:

没有答案