java - 使用 Jersey 在 Java 中发布 JSON 时出现 415 错误

标签 java json jersey http-status-code-415

我已经通过 Google 和此处的其他问题进行了查看,但无济于事。他们都说同样的话...导入 jersey-json 的 .jar(完成),将依赖项添加到 pom.xml(完成)并将 POJOMappingFeature 添加到 web.xml(完成),但我仍然无法使用传入或传出服务器的 JSON 访问 Restful Web 服务。

网络.xml

<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>My Application</display-name>

<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>my.app</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

pom.xml

<dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.8</version>
    </dependency>


    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.8</version>
    </dependency>

服务方式:

@POST
@Path("/request")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public ResponseInfo Request(RequestInfo requestInfo) 

ResponseInfo 和 RequestInfo 都有@XmlRoot 和@XmlElement 注解。 我在 Tomcat 7.0.33 上本地运行并收到以下错误:

SEVERE: A message body reader for Java class           
my.app.RequestInfo, and Java type class my.app.RequestInfo, and MIME media type
application/json was not found.
The registered message body readers compatible with the MIME media type are:
application/json ->
  com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$App
  com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$App
  com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$App
*/* ->
  com.sun.jersey.core.impl.provider.entity.FormProvider
  com.sun.jersey.core.impl.provider.entity.StringProvider
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.ReaderProvider
  com.sun.jersey.core.impl.provider.entity.DocumentProvider
  com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
  com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
  com.sun.jersey.core.impl.provider.entity.EntityHolderReader
  com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
  com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General

最佳答案

您似乎缺少用于编码和解码的 JacksonJsonProvider.class,可以在 jackson-core-asl-1.9.2.jar 中找到

关于java - 使用 Jersey 在 Java 中发布 JSON 时出现 415 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13810773/

相关文章:

java - 反编译minecraft服务器时出现Windows错误: Error 5,

java - 错误 : Could not write JSON: Class java. util.ArrayList 不是映射的子类型 - Spring 应用程序中序列化为 JSON

java - Jersey/JAX-RS 项目中的 Gradle 'Could not resolve all dependencies for configuration'

java - 涉及多个类的接口(interface)隔离原则 - 如何正确设计?

Java反射,改变父类(super class)中声明的字段的值

java - GAE+JUnit : Add a blob to the blobstore

javascript - 将表单中的 JSON 添加到另一个表单的隐藏输入中并提交

javascript - 来自 JSON 数据的邻接列表

java - Jersey 在 Restful 服务中将 HashMap 序列化为 json 最简单的方法是什么?

java - 在 com.sun.jersey.guice.spi.container.servlet.GuiceContainer 中找不到合适的构造函数