当前位置: 首页 > 知识库问答 >
问题:

Rest api开发:获取错误:未找到MessageBodyWriter用于媒体类型=application/xml

孔安福
2023-03-14
package org.vaibhavc.practice.microservice.messanger.resources;
import java.util.List;

import org.vaibhavc.practice.microservice.messanger.model.Message;
import org.vaibhavc.practice.microservice.messanger.service.MessageService;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.GenericEntity;


@Path("/messages")
public class MessageResource {
    MessageService messageService = new MessageService();

    @GET
    @Produces(MediaType.APPLICATION_XML)

    public Response getMessage() {
        List<Message> newMessage = messageService.getAllMessages();
        GenericEntity<List<Message>> list = new GenericEntity<List<Message>>(newMessage) {};
        return Response.ok(list).build();
        }
}

message.java

package org.vaibhavc.practice.microservice.messanger.model;

import java.util.Date;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Message { 
    private long id;
    private String message;
    private Date created;
    private String author;

    public Message(){

    }
    public Message(long id, String message, String author) {
        this.id = id;
        this.message = message;
        this.created = new Date();
        this.author = author;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }

}

messageService.java

package org.vaibhavc.practice.microservice.messanger.service;

import java.util.ArrayList;
import java.util.List;

import org.vaibhavc.practice.microservice.messanger.model.Message;

public class MessageService {

    public List<Message> getAllMessages(){
        Message m1 = new Message(1L,"Hello world!","Vaibhav");
        Message m2 = new Message(2L,"Hello jersery!","Vaibhav"); 

        List<Message> list = new ArrayList<>();
        list.add(m1);
        list.add(m2);

        return list;
    }

}

成功生成和编译的代码。当我试图访问url“http://localhost:8080/messanger/webapi/messages”时,我得到如下错误:严重:MessageBodyWriter未找到media type=application/xml,type=class java.util.ArrayList,genericType=java.util.List。

你知道我错过了什么吗?

共有1个答案

经景辉
2023-03-14
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.31</version>
 类似资料:
  • 我在使用JAX-RS服务作为JSON时遇到了一些问题。

  • 我正在使用JAX RS 2创建Rest客户端。客户端可以工作,但只有在我的IDE(IntellIJ IDEA)中,当我用Maven构建它时,使用Maven汇编插件并运行jar,它就不再工作了。 我收到的MessageBodyWriter找不到媒体类型=应用程序/json错误。 我尝试过添加其他帖子中建议的更多依赖项,但我不认为依赖项是一个问题,因为它在IDE中运行。 下面是引发异常的代码 调试后,

  • 问题内容: 我正在使用Jetty进行小型的RESTful服务。使用Maven作为构建工具。 当我尝试调用试图访问对象的JSON表示形式的GET方法时,出现“ MessageBodyWriter”错误。有问题的方法如下, GtfsRtFeedModel的GtfsRtFeedModel如下, 我的Maven文件包括以下内容以及码头依赖项, 大部分类似的问题似乎已通过添加和所需的依赖关系得以解决。但是由

  • 我正在尝试遵循Jersey文档,以便在发生错误时启用非200响应(https://Jersey.java.net/documentation/latest/representations.html#D0E3586) 我的代码看起来像: 不幸的是,这会产生以下错误: [2015-02-01T16:13:02.157+0000][glassfish 4.1][严重][][org.glassfish.j

  • 我正在尝试使用Jersey作为框架实现一个小的REST API,原则上代码工作正常,但是当我尝试对哈希表进行“GET”时,我得到以下错误: 这是有问题的一行: 这就是我实现服务的方式: pom公司。xml(maven依赖项) 服务器端配置: 在客户端中注册杰克逊时出错: 新类别: 术语类: 有人能帮我退回地图吗?