- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我是 Spring Data 的新手。我不断收到错误:org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported
我试图将 @RequestMapping
注释中的消耗更改为 text/plain
但不幸的是它没有帮助。*
有什么想法吗?
谢谢,
我的代码如下所示:
package com.budget.processing.application;
import com.budget.business.service.Budget;
import com.budget.business.service.BudgetItem;
import com.budget.business.service.BudgetService;
import com.budget.processing.dto.BudgetDTO;
import com.budget.processing.dto.BudgetPerConsumerDTO;
import com.utils.Constants;
import com.common.utils.config.exception.GeneralException;
import org.apache.log4j.Logger;
import org.joda.time.YearMonth;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.ws.rs.core.MediaType;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@Controller("budgetManager")
@RequestMapping(value = "budget", produces = Constants.RESPONSE_APP_JSON)
@Transactional(propagation = Propagation.REQUIRED)
public class BudgetManager {
private static final Logger logger = Logger.getLogger(BudgetManager.class);
@Autowired
private BudgetService budgetService;
@RequestMapping(method = RequestMethod.GET)
public
@ResponseBody
Collection<BudgetDTO> getBudgetMonthlyAllConsumers() throws GeneralException {
List<Budget> budgetList = budgetService.getBudgetForAllConsumers();
List<BudgetDTO> bugetDtos = new ArrayList<>();
for (Budget budget : budgetList) {
BudgetDTO budgetDTO = generateBudgetDto(budget);
bugetDtos.add(budgetDTO);
}
return bugetDtos;
}
@RequestMapping(method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON)
public
@ResponseBody
Collection<BudgetDTO> updateConsumerBudget(@RequestParam(value = "budgetPerDate", required = false)
ArrayList<BudgetPerConsumerDTO> budgetPerDate) throws GeneralException, ParseException {
List<BudgetItem> budgetItemList = new ArrayList<>();
List<Budget> budgets = new ArrayList<>();
if (budgetPerDate != null) {
for (BudgetPerConsumerDTO budgetPerConsumerDTO : budgetPerDate) {
budgetItemList.add(budgetService.createBudgetItemForConsumer(budgetPerConsumerDTO.getId(), new YearMonth(budgetPerConsumerDTO.getDate()), budgetPerConsumerDTO.getBudget()));
}
}
budgets = budgetService.getBudgetForAllConsumers();
List<BudgetDTO> budgetDTOList = new ArrayList<>();
for (Budget budget : budgets) {
BudgetDTO budgetDto = generateBudgetDto(budget);
budgetDTOList.add(budgetDto);
}
return budgetDTOList;
}
}
这是我得到的异常(exception):
ERROR 2014-07-26 18:05:10.737 (GlobalExceptionHandler.eITFMSException: 86) Error executing Web Service org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported
at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:215)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:289)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:229)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:56)
at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:298)
at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1091)
请求如下所示: 我正在使用 Simple Rest Template Google Extension。请求如下所示:
localhost:8080/rest
1 requests ❘ 140 B transferred
HeadersPreviewResponseCookiesTiming
Remote Address:localhost:8080
Request URL: localhost:8080/rest/budget
Request Method:PUT
Status Code:500 Internal Server Error
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,he;q=0.6
Connection:keep-alive
Content-Length:331
Content-Type:text/plain;charset=UTF-8
Cookie:JSESSIONID=AE87EEB7A73B9F9E81956231C1735814
Host:10.23.204.204:8080
Origin:chrome-extension://fhjcajmcbmldlhcimfajhfbgofnpcjmb
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Request Payloadview parsed
{
"budgetPerDate":
[
{
"id":942,
"date":[
2014,
1,
1
],
"budget": 100
},
{
"id":942,
"date":[
2014,
2,
1
],
"budget": 150
}
]
}
最佳答案
根据评论中提到的内容,最简单的解决方案是:
@RequestMapping(method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Collection<BudgetDTO> updateConsumerBudget(@RequestBody SomeDto someDto) throws GeneralException, ParseException {
//whatever
}
class SomeDto {
private List<WhateverBudgerPerDateDTO> budgetPerDate;
//getters setters
}
该解决方案假定您正在创建的 HTTP 请求实际上具有
Content-Type:application/json
而不是 text/plain
关于java - 错误 : org. springframework.web.HttpMediaTypeNotSupportedException:不支持内容类型 'text/plain;charset=UTF-8',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24972437/
我的.NET应用程序中有这个类,用于将一些数据从客户端(.NET)发送到服务器(Spring): class NetworkController { private s
我目前正在绞尽脑汁想知道为什么包含参数 @RequestBody Car car 会破坏我的终点。 我对 Spring Boot 非常陌生,并尝试将 json 字符串发布到我的 rest Contro
我的 Controller 上的休息和方法发布有问题,我有这2个类,第一个是我的类用户中的用户,我的类有getter和setter以及默认构造函数,因为最后我想使用Hibernate .: @Enti
我在一个类中设置了一个简单的 Spring REST 方法,该方法应该只返回在 POST 请求中发送给它的文本作为响应。我在类 MyService.java 中的方法: @RequestMapping
我正在尝试在 spring 框架中测试 POST 方法,但我一直收到错误。 我第一次尝试这个测试: this.mockMvc.perform(post("/rest/tests").
我正在测试 api 端点,MockMvc 抛出 org.springframework.web.HttpMediaTypeNotSupportedException 预期状态: 但为:阅读有关类似问题
我在尝试测试 Json Controller 时遇到以下异常 org.springframework.web.HttpMediaTypeNotSupportedException。 Controlle
我有一个带有以下 Post 代码的 RestController,并尝试在我的 AJAX 中使用它在数据库表中添加数据。我有以下错误。 RestController 方法发布 @RequestMapp
我收到以下异常: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json'
大家好,请建议我如何解决这个问题我正在尝试使用休息网络服务请参阅下面的代码 import java.sql.ResultSet; import java.util.Date; import java.
由于 Jackson 尝试反序列化我的 POJO 时出现问题,我收到上述错误。 我已经调试了代码,它在 Jackson 的 ObjectMapper 中返回 false: public boolean
我尝试发送 PUT 请求。我有serialazible类和具有必要设置的 Controller ,我的请求有contentType:“application/json”。 目的地航类: public
我是 Spring Data 的新手。我不断收到错误:org.springframework.web.HttpMediaTypeNotSupportedException: Content type
当我调用休息服务时,我遇到了以下异常。 org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'applic
我正在处理 Spring Boot MySQL 示例,链接如下: https://www.callicoder.com/spring-boot-rest-api-tutorial-with-mysql
我在 spring 集成测试中遇到了一个奇怪的问题。我有一个在 tomcat 上运行的工作 Controller 和应用程序。但是在我的集成测试中,我得到以下堆栈跟踪: org.springframe
我是一名优秀的程序员,十分优秀!