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

java POST方法415错误

壤驷睿
2023-03-14

我有一个JavaEE项目。在这个项目中,我使用SpringHibernate作为服务器端和主干,RequireJS和Jquery作为客户端。我试图用POST方法保存,但HTTP 415返回错误。

我的Get方法很好用。我在邮递员身上测试过。

我的url:localhost:8080/rest/travel

编辑过

我的资源课

    @Component
@Path("/travel")
public class TravelResource {

        @Autowired
        private TravelService travelService;
       @Autowired
      private UserService userService;

    @POST
    @Produces(MediaType.APPLICATION_JSON+ ";charset=UTF-8")
    @Consumes(MediaType.APPLICATION_JSON)
        public TravelDTO save(TravelDTO dto) {
        dto.setUser(userService.get(dto.getUser().getUserID()));
          dto.setTravelStart(new Date());
          dto.setTravelEnd(new Date());

          return travelService.save(dto);
        }

    @PUT
    @Path("/{travelID}")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
        public TravelDTO edit(@PathParam("travelID") int id, TravelDTO dto) {
        dto.setUser(userService.get(dto.getUser().getUserID()));
        dto.setTravelStart(new Date());
        dto.setTravelEnd(new Date());

        return travelService.edit(id,dto);
        }

    @DELETE
    @Path("/{travelID}")
    @Produces(MediaType.TEXT_PLAIN)
        public int delete(@PathParam("travelID") int id) {
        travelService.delete(id);
        return id;
        }
    @GET
    @Path("/{travelID}")
    @Produces(MediaType.APPLICATION_JSON)
        public TravelDTO get(int id) {
        return travelService.get(id);
        }
    @GET
    @Produces(MediaType.APPLICATION_JSON)
        public List<TravelDTO> getAll() {
        return travelService.getAll();

        }

    @GET
    @Path("/search/{travelStart}/{travelEnd}/" )
    @Produces(MediaType.APPLICATION_JSON + ";charset=UTF-8")
    public List<TravelDTO> search(@PathParam("travelStart") Date travelStart,
                                  @PathParam("travelEnd") Date travelEnd )
    {
        return travelService.search(travelStart,travelEnd);
    }

}

我的DTO课

public class TravelDTO implements Serializable {

    public TravelDTO convert(Travel model) {
        this.setTravelID(model.getTravelID());
        this.setTravelCost(model.getTravelCost());
        this.setTravelStart(model.getTravelStart());
        this.setTravelEnd(model.getTravelEnd());
        this.setLocation(model.getLocation());
        this.setTravelPurpose(model.getTravelPurpose());
       this.setProjectCode(model.getProjectCode());
       this.setUser(new UserDTO().convert(model.getUser()));
        return this;
    }
        private int travelID;

       private String projectCode;

        private Date travelStart;

        private Date travelEnd;

        private String Location;

        private float travelCost;

        private UserDTO user;

        private String travelPurpose;

    public UserDTO getUser() {
        return user;
    }

    public void setUser(UserDTO user) {
        this.user = user;
    }

    public String getProjectCode() {
        return projectCode;
    }

    public void setProjectCode(String projectCode) {
        this.projectCode = projectCode;
    }

    public int getTravelID() {
            return travelID;
        }

        public void setTravelID(int travelID) {
            this.travelID = travelID;
        }

        public Date getTravelStart() {
            return travelStart;
        }

        public void setTravelStart(Date travelStart) {
            this.travelStart = travelStart;
        }

        public Date getTravelEnd() {
            return travelEnd;
        }

        public void setTravelEnd(Date travelEnd) {
            this.travelEnd = travelEnd;
        }

        public String getLocation() {
            return Location;
        }

        public void setLocation(String location) {
            Location = location;
        }

        public float getTravelCost() {
            return travelCost;
        }

        public void setTravelCost(float travelCost) {
            this.travelCost = travelCost;
        }

        public String getTravelPurpose() {
            return travelPurpose;
        }

        public void setTravelPurpose(String travelPurpose) {
            this.travelPurpose = travelPurpose;
        }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        TravelDTO travelDTO = (TravelDTO) o;

        return travelID == travelDTO.travelID;
    }

    @Override
    public int hashCode() {
        return travelID;
    }
}

我的服务课

@Service
public class TravelService {
        @Autowired
        private TravelDAO travelDAO;

        @Transactional
        @ResponseBody
        public TravelDTO save(TravelDTO dto) {
            Travel station = new Travel();
            station.convert(dto);
            try {
                station = travelDAO.persist(station);
            } catch (Exception e) {
                return null;
            }
            return dto.convert(station);
        }

        @Transactional
        @ResponseBody
        public TravelDTO edit(int id, TravelDTO dto) {
            Travel travel = new Travel();
            try {
                travel.convert(dto);
                travelDAO.merge(travel);
            } catch (Exception e) {
                return null;
            }
            return dto.convert(travel);
        }

        @Transactional
        @ResponseBody
        public boolean delete(int id) {
            try {
                Travel travel = travelDAO.find(id);
                travelDAO.remove(travel);
            } catch (Exception e) {
                return false;
            }
            return true;
        }

        public TravelDTO get(int id) {
            Travel travel;
            try {
                travel = travelDAO.find(id);
            } catch (Exception e) {
                return null;
            }
            return new TravelDTO().convert(travel);
        }

        public List<TravelDTO> getAll() {
            List<TravelDTO> travelDTOList = new ArrayList<TravelDTO>();
            try {
                for (Travel travel : travelDAO.findAll())
                    travelDTOList.add(new TravelDTO().convert(travel));
            } catch (Exception e) {
                return null;
            }
            return travelDTOList;
        }

        public List<TravelDTO> search(Date startTime, Date endTime)
                                      {
            List<TravelDTO> travelDTOList = new ArrayList<TravelDTO>();
            try {
                for (Travel station : travelDAO.search(startTime, endTime))
                    travelDTOList.add(new TravelDTO().convert(station));
            } catch (Exception e) {
                return null;
            }
            return travelDTOList;
        }




}

我的数据:

model:{"Location":"s","projectCode":"51","travelPurpose":"s","travelStart":"1.1.1","travelEnd":"8.12.2016"}

网络表

在此处输入图像描述

共有3个答案

和魁
2023-03-14

我的错误原因是以下主干代码:

Backbone.emulateJSON = true;

如果主干。emulateJSON=true内容类型=application/x-www-form-urlencoded

现在主干网。emulateJSON=false 问题解决了!

卞俊贤
2023-03-14

HTTP 415来的时候

The origin server is refusing to service the request because the payload is in 
a format not supported by this method on the target resource.

参考:https://httpstatuses.com/415

您需要正确设置请求标头。根据您所附的图像,您正在传递内容类型:application/x-www-form-urlencoded。但是您的代码需要application/json

吕树
2023-03-14

如果您尝试在POSTMAN中调用,请添加Content Type:application/json作为头参数。

 类似资料:
  • 这里是android开发新手。我正在尝试将一个.gpx文件发布到我的web数据库中。但是,我收到http响应错误415。我知道415意味着不正确的内容类型,我尝试使用的API有这段代码…谢谢你的提示! 这是我的Http请求类 这是我的活动 这是我从httpbin得到的响应 /*I/system.out:服务器回复: I/system.out:{ I/system.out:“args”:{}, i/

  • 无论我尝试什么,发送给dispatcher servlet的请求都会返回HTTP 415错误。请求中将内容类型设置为application/json。 消息转换器似乎没有将请求映射到对象。 我的POM中有所有Jackson依赖项: 控制器类: 我试图在@刚需映射中添加接受、消费、生产,但没有成功。 我可以使用HttpServletRequest作为方法参数获得正确的JSON响应: 这一个在写入系统

  • 我的Spring Rest控制器有问题。我试图发布(PUT)数据从我的客户端(angularJS)到我的服务器(Spring),但每次我试图发送的东西我得到一个错误。 有了Maven,我在SpringAPI中添加了和。我还使用自动将Jackson消息转换器添加到Spring。在我的Spring控制器中,我使用访问Spring的REST方法。 我的REST API控制器: 我尝试过不同类型的消费:

  • 我的控制器中有以下内容: 为: 我得到以下错误: 请注意,我已经安装了Jackson(来自这个问题:Jackson Databind类路径问题)。 此外,我可以很好地使用,但是当我尝试使用时,它就会给我带来这个错误。 如何使@RequestBody成为UserEntity?

  • 我已经设置了一个AWS Lambda函数,并试图从前endpoint击它。它在浏览器中工作得很好,并返回我期望的响应。当我尝试从点击它时,我得到一个403。我试图按照这里和这里概述的步骤(没有像一些评论者提到的那样吹走我的整个API),但没有效果。我在所有变化后重新部署。启用CORS后,我不再获得403,而是获得415。不确定下一步该做什么,因为Cloudwatch日志中没有任何内容。 更多细节:

  • 我目前正在做一个项目,我需要向spring发送一个POST请求。我已经找了好几个小时的解决方案,但没有找到一个可行的。当我开发该部件时,请求起了作用。问题是,在创建一些新功能(另一个控制器中有两个新endpoint)后,用于创建或更新实体的POST请求停止工作,而不会更改特定区域中的代码。 控制器: 最初,关于消费和生产的部分不在那里,我尝试了它,因为在其他帖子上看到了它,但对情况没有帮助。 传感