1

我有 Post 方法的 Ajax 调用,它使用 XML 并生成 PDF。如何在 AJAX 中设置我的标题?任何有关异常的输入都会有很大帮助。我确实浏览过,但没有找到太多关于此的内容。

Ext.Ajax.request({
        url : "/rest/sample/" + sampleId + "/sam",
        params : params,
        form : downloadForm,
        isUpload : true,
        method : 'POST',
        headers: {'Content-Type': 'text/xml'},
        scope : this,
        xmlData: XMLSampleData
    }); 

XMLSampleData 具有 Xml 数据。

休息 :

  @Path("/sam")
    @Produces("application/pdf")
    @Consumes({"application/xml", "text/xml"})

我不断收到此异常:

Uncaught REST Server Error: null
javax.ws.rs.WebApplicationException
    at com.sun.jersey.server.impl.uri.rules.TerminatingRule.accept(TerminatingRule.java:66)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:86)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:136)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:74)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1357)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1289)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1239)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:497)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:684)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
4

2 回答 2

2

该异常可能有不同的原因,但是当我为 RuntimeException 实现自己的映射器时遇到了它。虽然我的映射器在技术上是正确的,但它似乎使 Jersey 内置的错误处理短路了。删除我的映射器清除了异常,我从 Jersey 得到了预期的错误代码(405、415 等)。

此外,请确保您为每个 REST 资源都包含一个方法。使用您的示例,那将是:

@Path("/sam")
@POST                             <---- Include a Method (POST, GET, PUT, etc)
@Produces("application/pdf")
@Consumes({"application/xml", "text/xml"})
于 2013-05-22T19:40:23.637 回答
0

请尝试指定“接受”标题,例如。

headers: {'Content-Type': 'text/xml', 'Accept': 'application/pdf'},
于 2016-05-12T06:49:45.240 回答