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

PUT-发送JSON-不支持的媒体类型,json,spring,rest,jersey,Json,Spring,Rest,Jersey,我在泽西岛(Jersey)有一个REST服务,我正在使用邮递员(Postman)实现该服务 我在postman中发现以下错误: 415不支持的媒体类型 我试了,和。什么都不管用 我正在发送JSON,请求方法被放入 我试图通过一个名为 更新消息 我的代码: package org.glassfish.jersey.archetypes.jersey_quickstart_webapp.resources; import java.util.List; import javax.ws.rs.Co

我在泽西岛(Jersey)有一个REST服务,我正在使用邮递员(Postman)实现该服务

我在postman中发现以下错误:

415不支持的媒体类型

我试了,和。什么都不管用

我正在发送JSON,请求方法被放入

我试图通过一个名为

更新消息

我的代码:

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\u quickstart\u webapp.resources;
导入java.util.List;
导入javax.ws.rs.Consumes;
导入javax.ws.rs.GET;
导入javax.ws.rs.POST;
导入javax.ws.rs.PUT;
导入javax.ws.rs.Path;
导入javax.ws.rs.PathParam;
导入javax.ws.rs.products;
导入javax.ws.rs.core.MediaType;
导入org.glassfish.jersey.archetypes.jersey\u quickstart\u webapp.model.Message;
导入org.glassfish.jersey.archetypes.jersey\u quickstart\u webapp.service.MessageService;
@路径(“/messages”)
公共类消息资源{
MessageService=newmessageservice();
@得到
@产生(MediaType.APPLICATION_JSON)
公共列表getMessages()
{
return messageService.getAllMessages();
}
@职位
@使用(MediaType.APPLICATION_JSON)
@产生(MediaType.APPLICATION_JSON)
公共消息添加消息(消息消息)
{
返回messageService.add(message);
}
@放
@路径(“/{messageId}”)
公共消息更新消息(@PathParam(“messageId”)长id,消息消息)
{
message.setId(id);
returnmessageservice.updateMessage(消息);
}
@得到
@路径(“/{messageId}”)
@产生(MediaType.APPLICATION_JSON)
公共消息getMessage(@PathParam(“messageId”)长id)
{
returnmessageservice.getMessage(id);
//返回“获取路径参数”+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);
}
}
package org.glassfish.jersey.archetypes.jersey\u quickstart\u webapp.service;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Map;
导入org.glassfish.jersey.archetypes.jersey\u quickstart\u webapp.database.DatabaseClass;
导入org.glassfish.jersey.archetypes.jersey\u quickstart\u webapp.model.Message;
公共类消息服务{
私有映射消息=DatabaseClass.getMessages();
公共信息服务{
消息。放置(1l,新消息(1,“你好世界”,“Nishil”);
消息。放置(2l,新消息(2,“Hello Jersey”,“Nishil”);
}
@SuppressWarnings({“rawtypes”,“unchecked”})
公共列表getAllMessages()
{
messages.values();
返回新的ArrayList(messages.values());
}
公共消息getMessage(长id)
{
返回消息。get(id);
}
公共消息添加(消息消息)
{
message.setId(messages.size()+1);
messages.put(message.getId(),message);
返回消息;
}
公共消息更新消息(消息消息)
{

如果(message.getId()您需要在Postman中设置
内容类型:application/json
标题。我相信如果您不设置它,它只是默认为
text/plain
,因此是“不支持的媒体类型”。

所以除了
PUT
,其他一切都正常?是的,我也尝试更改@products(MediaType.APPLICATION_JSON)到@products(“APPLICATION/JSON”)您是否在postman中设置了
内容类型
标题?将内容类型放在标题而不是正文中