Spring org.springframework.web.client.RestTemplate亂碼
@spring version 4.2.3
- RestTemplate 例項化時需要HTTPMessageConverters
RestTemplate(List<HttpMessageConverter<?>> messageConverters)
Create a new instance of the RestTemplate using the given list of HttpMessageConverter to use
- 因我需要HTTPMessageConverters的實現類:StringHttpMessageConverter,所以接下來是用這個來舉例,先給幾個HTTPMessageConverters的實現類,官網上也有說明:
All Known Implementing Classes:
AbstractGenericHttpMessageConverter, AbstractHttpMessageConverter, AbstractJackson2HttpMessageConverter, AbstractJaxb2HttpMessageConverter, AbstractWireFeedHttpMessageConverter, AbstractXmlHttpMessageConverter, AllEncompassingFormHttpMessageConverter, AtomFeedHttpMessageConverter, BufferedImageHttpMessageConverter, ByteArrayHttpMessageConverter, FormHttpMessageConverter, GsonHttpMessageConverter, Jaxb2CollectionHttpMessageConverter, Jaxb2RootElementHttpMessageConverter, MappingJackson2HttpMessageConverter, MappingJackson2XmlHttpMessageConverter, MarshallingHttpMessageConverter, ObjectToStringHttpMessageConverter, ProtobufHttpMessageConverter, ResourceHttpMessageConverter, RssChannelHttpMessageConverter, SourceHttpMessageConverter, StringHttpMessageConverter, XmlAwareFormHttpMessageConverter
- 記下來說StringHttpMessageConverter
見官網:
Constructor Summary
Constructors
Constructor and Description
StringHttpMessageConverter()
A default constructor that uses "ISO-8859-1" as the default charset.
StringHttpMessageConverter(Charset defaultCharset)
A constructor accepting a default charset to use if the requested content type does not specify one
有兩個建構函式,如果使用第一個,spring預設使用第一個,那麼我們編碼就是ISO,
所以我們需要使用第二個。
- 先用傳統程式碼來實現:
import java.nio.charset.Charset;
import java.util.List;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;
import com.google.common.collect.Lists;
public class RestTemplateCover extends RestTemplate{
public RestTemplateCover() {
List<HttpMessageConverter<?>> messages = Lists.newArrayList();
StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
messages.add(converter);
this.setMessageConverters(messages);
}
}
spring servlet.xml中加入:
<bean id = "restTemplate" class="xxx.xxx.xx.RestTemplateCover"></bean>
- 但是這種方式太麻煩,還要改了然後再加入。何不必直接使用xml(其實真實原因是因為本人xml不行,下面的xml配置弄了半天才出來的):
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class = "org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg type="java.nio.charset.Charset">
<value>UTF-8</value>
</constructor-arg>
</bean>
</list>
</property>
</bean>
總結
經過這次對這個RestTemplate亂碼問題的處理,對問題處理的認知也有了自己的想法。
1.不要急,先百度下,如果百度不到,翻看原始碼。
2.翻看原始碼,仔細的觀察會使什麼原因導致的。比如這次是因為charset導致的。我們在看RestTemplate的時候很輕易的可以找到messageConverters是導致亂碼的原因(總共就幾個建構函式)。
http://docs.spring.io/spring/docs/current/javadoc-api/
從HttpMessageConverter的實現類中選取自己需要的: StringHttpMessageConverter。
它的建構函式有設定編碼的方法。從而達到目的。知識積累:
某類用建構函式,而我們需要對有引數的進行注入:
<bean class="xxx.java">
<constructor-arg value="xxx"/>
</bean>
相關推薦
Spring org.springframework.web.client.RestTemplate亂碼
@spring version 4.2.3 RestTemplate 例項化時需要HTTPMessageConverters RestTemplate(List<HttpMessag
org.springframework.web.client.RestTemplate 無法載入
解決方案; 在啟動函式中加入 @Bean public RestTemplate restTemplate(ClientHttpRequestFactory factory){ return new RestTemplate(factory); } @Bea
【SpringBoot】RestTemplate呼叫報錯:'org.springframework.web.client.RestTemplate' that could not be found.
RestTemplate引入方式為:@Autowiredpublic RestTemplate restTemplate; 時報錯,錯誤資訊如下錯誤:'org.springframework.web.client.RestTemplate' that could n
Consider defining a bean of type 'org.springframework.web.client.RestTemplate' in your configuration
如題,在springcloud開發中,當我們將RestTemplate通過@Autowired註解注入到一個類中,啟動服務報錯。 在springboot1.3版本中會預設提供一個RestTemplate的例項Bean,當在springboot1.4以及以後的版本中,需要手動
org.springframework.web.client.HttpServerErrorException: 500 null
span fault temp post using erro 發現 obj 客戶 在使用RestTemplate 的時候,微服務沒有發生錯誤,只是執行時間較長2018-05-03 16:57:02.916 INFO 14456 --- [o-10002-exec-11]
com.springframework.web.client.RestTemplate
1.建兩個pojo(實體類),一個是UpdateUserRqst,是send出去的json的那個實體類。一個是UpdateUserResp,用來接受json變成的類。 public class UpdateUserResp{ String result; get set
spring MVC 報錯:java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
重新 chain http1 accesslog instance report ppc springmvc bstr 嚴重: Allocate exception for servlet SpringMVCjava.lang.ClassNotFoundExceptio
spring配置問題:嚴重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
manager base class spring配置 r.java 配置 enc contain app 將項目發布到tomcat時出現下面錯誤 嚴重: Error configuring application listener of class org.springf
Maven+spring 報錯:Error configuring application listener of class org.springframework.web.cont
Maven+spring 報錯:Error configuring application listener of class org.springframework.web.cont 錯誤資訊: SEVERE: Error configuring application
eclispe中建立maven專案使用spring報java.lang.ClassNotFoundException: org.springframework.web.filter.Charact
報錯如下: 資訊: Starting Servlet Engine: Apache Tomcat/7.0.57 九月 24, 2018 6:44:04 下午 org.apache.catalina.util.SessionIdGenerator createSecureRa
spring boot 上傳檔案出錯:org.springframework.web.multipart.MultipartException: Could not parse multipart s
一個國慶假期回來,測試跟我說以前好好的檔案上傳不能用了,還是真實環境,程式報如下錯誤: org.springframework.web.multipart.MultipartException: Cou
Spring的初始化:org.springframework.web.context.ContextLoaderListener
在web.xml中配置 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> <
spring實戰之坑:配置MongoDB出錯org.springframework.web.context.ContextLoader.initWebApplicationContext Conte
org.springframework.web.context.ContextLoader.initWebApplicationContext Context initialization failedjava.lang.BootstrapMethodError: java.
IDEA 下spring mvc 等web 程式啟動報錯找不到類:org.springframework.web.context.ContextLoaderListener等問題
當初看見這個以為自己那個地方出現了什麼毛病。所以多建立了幾個程式,卻發現一直都是啟動不了啟動失敗22-Mar-2018 19:50:30.426 嚴重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.Sta
Spring boot(16) spring boot 線上故障 上傳檔案出錯:org.springframework.web.multipart.MultipartException: Could
上線後,過了一段時間上傳檔案的時候 出現錯誤 org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception
使用spring mvc 4.2.x.jar ClassNotFoundException:org.springframework.web.cors.CorsConfigurationSource
使用spring mvc的包時,如果選擇了4.2.x及以上版本,在控制器中呼叫RequestMapping("")註解時 啟動Tomcat報錯:ClassNotFoundException:org.springframework.web.cors.CorsConfigura
關於intellij載入spring框架java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL
環境:intellij 15 ,Spring 3.1 本來新建了一個springMVC的專案,動都沒動,點開tomcat,卻發現tomcat啟動出了問題。 異常就是java.lang.ClassNotFoundException: org.springframework.w
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
frame rtu tex catalina 導入 listen 前言 intern 初步 前言: MyEclipse整合ssh框架,間歇性Tomcat啟動發生java.lang.ClassNotFoundException: org.springframework.w
【web.xml】報錯java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
sch display ldr cep .class apache blog man reload 今天搭建新的項目,雖然在web.xml中配置了ContextLoaderListener以及IntrospectorCleanupListener 如下: web.xml中部
java.lang.ClassNotFoundException: org.springframework.web.content.ContextLoaderListener
pla nag sdn fonts b2c dsm exc span fontsize 1、錯誤描寫敘述嚴重: Error configuring application listener of class org.springframework.web.content