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

PUT-发送JSON-不支持的媒体类型

孟思远
2023-03-14

我在泽西岛有一个Rest服务,我正在使用邮递员实现

我在邮递员中得到以下错误:

package org.glassfish.jersey.archetypes.jersey_quickstart_webapp.resources;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.glassfish.jersey.archetypes.jersey_quickstart_webapp.model.Message;
import org.glassfish.jersey.archetypes.jersey_quickstart_webapp.service.MessageService;


@Path("/messages")
public class MessageResource {

    MessageService messageService = new MessageService();

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Message> getMessages()
    {
        return messageService.getAllMessages();
    }

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Message addMessage(Message message)
    {
         return messageService.add(message);
    }

    @PUT
    @Path("/{messageId}")


    public Message updateMessage(@PathParam("messageId")long id,Message message)
    {
        message.setId(id);
        return messageService.updateMessage(message);
    }

    @GET
    @Path("/{messageId}")
    @Produces(MediaType.APPLICATION_JSON)
    public Message getMessage(@PathParam("messageId")long id)
    {
        return messageService.getMessage(id);
        //return "Got Path Param" + messageId;
    }
}
package org.glassfish.jersey.archetypes.jersey_quickstart_webapp.service;

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

import org.glassfish.jersey.archetypes.jersey_quickstart_webapp.database.DatabaseClass;
import org.glassfish.jersey.archetypes.jersey_quickstart_webapp.model.Message;

public class MessageService {

    private Map<Long, Message> messages = DatabaseClass.getMessages();

     public MessageService() {
        messages.put(1l, new Message(1, "Hello World", "Nishil"));
        messages.put(2l, new Message(2, "Hello Jersey", "Nishil"));
    }




    @SuppressWarnings({ "rawtypes", "unchecked" })
    public List<Message> getAllMessages()
    {

        messages.values();
        return new ArrayList<Message>(messages.values());

    }
    public Message getMessage(long id)
    {
        return messages.get(id);
    }

    public Message add(Message message)
    {
        message.setId(messages.size()+1);
        messages.put(message.getId(), message);
        return message;
    }

    public Message updateMessage(Message message)
    {
        if(message.getId()<=0)
        {
            return null;
        }
        messages.put(message.getId(), message);
        return message;

    }

public Message removeMessage(long id)
{
    return messages.remove(id);
}
}

共有1个答案

慕弘伟
2023-03-14

您需要在Postman中设置content-type:application/json标头。我相信如果不设置它,它只是默认为text/plain,因此是“不受支持的媒体类型”。

 类似资料:
  • 问题内容: 我正在使用JSON请求调用REST服务,并且它以错误响应。 请求内容类型设置为。 如果我在请求中不包含JSON对象,则效果很好。我正在使用JSON库。 我尝试使用几个不同的库,但这没什么区别。 有人可以帮我解决这个问题吗? 这是我的代码: 的值为: 问题答案: 不确定原因,但是从中 删除行解决了该问题。

  • 我用JSON请求调用REST服务,它用HTTP 415“不支持的媒体类型”错误进行响应。 请求内容类型设置为。 如果我在请求中不包含JSON对象,它就可以正常工作。我正在使用JSON库。 我试着使用了几个不同的库,但没有什么不同。 有人能帮我解决这个问题吗? 这是我的代码: 是:

  • 我是自动化的一个API的POST调用使用Rest保证和内容类型和ACCEPT头我必须使用"应用程序/vnd.apijson"。但是每次我使用“应用程序/vnd.apijson”,我都会得到415个状态代码。尽管使用邮递员的相同POST呼叫工作得非常好。 以下是我的示例代码: 以下是收到的答复 我曾尝试将Content-Type更改为应用程序/json,正如其他帖子/评论所建议的那样,但这似乎对我的

  • 我正在从ajax调用向spring mvc控制器发送json对象。 请让我知道解决办法。我试了很多

  • 问题内容: 自数小时以来,我一直在尝试纠正http错误,但它仍显示不支持的页面。我在邮递员中添加标题。 这是我的Java代码 这是我的档案 问题答案: 通过和如何在响应流和请求流之间对对象进行序列化和反序列化。 将会发生的是,将从提供者的注册表中进行搜索,以查找可以处理的媒体类型。如果找不到,则Jersey无法处理该请求,并将发送415不支持的媒体类型。通常,你还应该在服务器端记录一个异常。不知道

  • 我已经创建了一个示例web服务来进行post调用。 我使用的是Jersey JAX-RS和Maven。