博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring3.0 Could not find acceptable representation 解决方案
阅读量:5251 次
发布时间:2019-06-14

本文共 2719 字,大约阅读时间需要 9 分钟。

在使用spring3.0.5 mvc开发时,进行json接口数据开发,使用JSONObject.fromObject(object)返回json数据。遇到“org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation”错误。

 

解决方案1:

@ResponseBody 方法的返回类型由JSONObject改为 Object, return时直接返回Object;

修改springmvc-servlet.xml, 增加 messageConverters 

需要jacksonjar包支持: jackson-core-lgpl-1.2.1.jar和 jackson-core-lgpl-1.2.1.jar。  

解决方案2:

@ResponseBody 方法的返回类型由JSONObject改为 String, return时直接返回JSONObject.fromObject(object).toString();

此时如有中文会出现乱码,解决方法如下:

  

 

解决方案3:

返回类型为JSONObject, 编写一个自己converter.

package javacommon.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.nio.charset.Charset;import org.springframework.http.HttpInputMessage;import org.springframework.http.HttpOutputMessage;import org.springframework.http.MediaType;import org.springframework.http.converter.AbstractHttpMessageConverter;import org.springframework.http.converter.HttpMessageNotReadableException;import org.springframework.http.converter.HttpMessageNotWritableException;public class JaksonConverter extends AbstractHttpMessageConverter {	public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");		public JaksonConverter() {		super(new MediaType("application", "json", DEFAULT_CHARSET));	}		@Override	protected boolean supports(Class
clazz) { // TODO Auto-generated method stub return false; } @Override protected Object readInternal(Class
clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { logger.info(clazz.getSimpleName()); InputStream inputStream=inputMessage.getBody(); StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String line = null; while((line = bufferedReader.readLine()) != null){ stringBuilder.append(line); } logger.info(stringBuilder.toString()); return stringBuilder; } @Override protected void writeInternal(Object t, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { logger.info(t.getClass().getSimpleName()); // HashMap // JSONObject logger.info(t.toString()); OutputStream os=outputMessage.getBody(); os.write(t.toString().getBytes("utf-8")); os.flush(); }}

将方案1中的converter换成编写的即可。  

转载于:https://www.cnblogs.com/leegtang/articles/4463178.html

你可能感兴趣的文章
linux cmake编译安装mysql_cmake编译安装MySQL-5.5
查看>>
mysql软件发布日期_MySQL获取今天的日期
查看>>
java读取docx_Java读取doc、docx、xls、xlsx、ppt、pptx、pdf文件内容
查看>>
python求向量函数的雅可比矩阵_[数学] 向量函数的雅可比矩阵与链式法则
查看>>
ip的正则表达式 java_Java用正则表达式判断是否为IP
查看>>
java里ojek_KEMANA - Open Source Ojek Online (like uber or gojek)
查看>>
java json asc排序_Java中对jsonArray的排序,使用的是Gson
查看>>
java高低八位反转_Java程序反转正整数的位
查看>>
vs建立java工程文件目录_初学VS的目录结构
查看>>
java线程池创建守护线程_多线程 线程池 守护线程
查看>>
java自动扩展_自动扩展背景图像
查看>>
java获取mp4头部信息_java调用ffmpeg获取视频文件信息的一些参数
查看>>
java 线程异步回调函数_并发编程~~~多线程~~~阻塞,非阻塞,同步,异步, 同步调用,异步调用, 异步调用 + 回调函数...
查看>>
java1010矩阵 类_JAVA_大数的阶乘-----蒜头君对阶乘产生了兴趣,他列出了前 1010 个正整数的阶乘以及对应位数的表...
查看>>
php7的redis扩展_CentOS7为php7.2安装php-redis扩展
查看>>
matlab播放视频代码,matlab实现视频中的目标跟踪,求大神帮忙翻译下代码!!
查看>>
l2正则化java代码,pytorch 实现L2和L1正则化regularization的操作
查看>>
php过两秒加载标签,jquery中怎样实现两秒之后刷新页面
查看>>
php168 变量修改,后台修改删除标签变量插件_php168_V6
查看>>
php将文本写入文件,php写入文本文件范例
查看>>