对泽西岛的JSON请求导致“400 Bad Request”

时间:2015-05-08 15:14:26

标签: json rest jersey

我有一个泽西服务器示例,它适用于XML,但不适用于JSON。

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.xml.bind.annotation.XmlRootElement;

@Path("JsonExample")
public class JsonExample {

    @XmlRootElement
    public static class Input {
        public String text;
    }

    @POST
    @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public String test(Input i) {
        return i.text;
    }

}

如果我将此xml请求作为application/xml发送到服务器,则一切正常,响应为ahttp://localhost:8080/App/rest/JsonExamplePOST

<input><text>a</text></input>

我在utilities-online.info将其翻译为JSON,并将其作为application/json发送到相同的网址,但参数相同,但收到错误“400 Bad Request”

{
  "input": { "text": "a" }
}

环境:

  • Tomcat 7
  • jersey 2.17

我尝试了什么:

  • org.codehaus.jackson.jaxrs添加到jersey.config.server.provider.packages init-param
  • 启用了init-param com.sun.jersey.api.json.POJOMappingFeature true
  • 添加了依赖com.sun.jersey / jersey-json / 1.8

1 个答案:

答案 0 :(得分:1)

在写我的问题时,我看到了一个例外,“输入”不是一个字段。正确的JSON请求必须是:

{ "text": "a" }