Ember POST 请求响应 XML 球衣响应 JAX-RS

Ember POST request responding with XML jersey response in JAX-RS

我有一个 ember 应用程序试图向我的 Restful Java Web 服务 (JAX-RS) 发出 post 请求。但是,该请求似乎没有到达端点。相反,Java 网络服务正在向 ember 发送以下响应:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
    <doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 1.10 11/02/2011 04:41 PM"/>
    <grammars/>
    <resources base="http://localhost:3002/">
        <resource path="users">
            <method id="postUser" name="POST">
                <response>
                    <representation mediaType="application/json"/>
                </response>
            </method>
        </resource>
    </resources>
</application>

Web 服务本身将以下消息打印到控制台

Feb 19, 2017 2:48:06 PM com.sun.jersey.server.wadl.generators.WadlGeneratorJAXBGrammarGenerator attachTypes
INFO: Couldn't find JAX-B element for class javax.ws.rs.core.Response
Feb 19, 2017 2:48:06 PM com.sun.jersey.server.wadl.generators.WadlGeneratorJAXBGrammarGenerator attachTypes
INFO: Couldn't find JAX-B element for class javax.ws.rs.core.Response
Feb 19, 2017 2:48:06 PM com.sun.jersey.server.wadl.generators.WadlGeneratorJAXBGrammarGenerator attachTypes
INFO: Couldn't find JAX-B element for class javax.ws.rs.core.Response
Feb 19, 2017 2:48:06 PM com.sun.jersey.server.wadl.generators.WadlGeneratorJAXBGrammarGenerator attachTypes
INFO: Couldn't find JAX-B element for class java.lang.String
Feb 19, 2017 2:48:06 PM com.sun.jersey.server.wadl.generators.WadlGeneratorJAXBGrammarGenerator attachTypes
INFO: Couldn't find JAX-B element for class javax.ws.rs.core.Response

JAX-RS 上的端点如下所示:

@Path("/users")
public class Users {
    @POST
    @Produces("application/json")
    public Response postUser() {
        System.out.println("here");
        return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("{}").header("Access-Control-Allow-Origin", "*").build();
    }
}

球衣版本:jax-rs-jersey-1.10

ember 中的适配器如下所示:

   export default DS.RESTAdapter.extend({
        host: 'http://localhost:3002',
    });

提前致谢!

编辑:在 postman 中测试请求时,一切正常。可能与 ember 中的 headers 有关?

问题是客户端正在发出 OPTIONS 请求以检查服务器是否响应 CORS,而 JAX-RS 没有为 CORS 设置。

解决方案 是写 CORS filter and then to update Jersy to 2.22. Therefore changing the HTTPServer setup to JdkHttpServerFactory