我有一个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"}
网络表
在此处输入图像描述
我的错误原因是以下主干代码:
Backbone.emulateJSON = true;
如果主干。emulateJSON=true
,内容类型=application/x-www-form-urlencoded
。
现在主干网。emulateJSON=false
问题解决了!
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
。
如果您尝试在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请求停止工作,而不会更改特定区域中的代码。 控制器: 最初,关于消费和生产的部分不在那里,我尝试了它,因为在其他帖子上看到了它,但对情况没有帮助。 传感