gpt4 book ai didi

android - 如何将 MappingJacksonHttpMessageConverter 的内容类型从 application/json;charset=UTF-8 更改为 application/json

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:57 25 4
gpt4 key购买 nike

我有一个 spring REST Web 服务,在我的 Controller 中,我使用 MappingJacksonHttpMessageConverter 将返回的模型转换为 JSON。但是当我用 firebug 检查它时,有 Content-Type=application/json;charset=UTF-8

此外,我正在尝试使用 spring android rest 模板从 android 客户端解析此结果,但我不断收到:

Could not extract response: no suitable HttpMessageConverter found for response type [xxx.SamplePageActivity$Result] and content type application/json;charset=UTF-8]

Android 客户端上的 MappingJacksonHttpMessageConverter 可能恰好需要类型 application/json

所以我的问题是如何将 spring 的 MappingJacksonHttpMessageConverter 的返回内容类型从 application/json;charset=UTF-8 更改为 application/json

这是我的 View 解析器配置。它可能有用:

<beans:bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<beans:property name="mediaTypes">
<beans:map>
<beans:entry key="html" value="text/html" />
<beans:entry key="json" value="application/json" />
</beans:map>
</beans:property>

<beans:property name="viewResolvers">
<beans:list>
<beans:bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value="${dispatcher.suffix}" />
</beans:bean>
</beans:list>
</beans:property>

<beans:property name="defaultViews">
<beans:list>
<beans:bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</beans:list>
</beans:property>
</beans:bean>

<beans:bean id="messageAdapter"
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<beans:property name="messageConverters">
<beans:list>
<!-- Support JSON -->
<beans:bean
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
</beans:list>
</beans:property>
</beans:bean>

最佳答案

您可以使用 supportedMediaTypes 属性更精确地配置 MappingJacksonHttpMessageConverter,如下所示:

<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
<property name="supportedMediaTypes">
<list>
<bean class="org.springframework.http.MediaType">
<constructor-arg value="application" />
<constructor-arg value="json" />
<constructor-arg value="#{T(java.nio.charset.Charset).forName('UTF-8')}"/>
</bean>
</list>
</property>
</bean>

根据文档 (http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/http/MediaType.html),您可以按此顺序设置类型、子类型和字符集-

关于android - 如何将 MappingJacksonHttpMessageConverter 的内容类型从 application/json;charset=UTF-8 更改为 application/json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5725319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com