2016-07-26 2 views
2

У меня возникла проблема с отправкой umlauts в Spring API. Я хочу опубликовать следующий JSON:Как использовать umlaut с пружиной api

{ 
"username": "testümlaut", 
"firstName": "test", 
"lastName": "Test" 
} 

для этого у меня есть следующий старт метод:

@RequestMapping(value="/User", method=RequestMethod.POST, 
     produces={"application/json ; charset=utf-8"} 
) 
    @ResponseStatus(HttpStatus.CREATED) 
    public @ResponseBody User postUser(@RequestBody User user) {  

    User user = userDao.addUser(user); 

    return user; 
    } 

Как вы можете видеть, у меня есть строка:

produces={"application/json ; charset=utf-8"} 

но это не помогает. Я всегда получаю исключение (0xfc is ü):

Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: Invalid UTF-8 start byte 0xfc 
at [Source: [email protected]; line: 2, column: 19] (through reference chain: de.escosautomation.restserver.model.user.UserClone["username"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Invalid UTF-8 start byte 0xfc 
at [Source: [email protected]; line: 2, column: 19] (through reference chain: de.escosautomation.restserver.model.user.UserClone["username"]) 

Что я могу добавить, чтобы заставить его работать?

Thanx.

ответ

1

Вы можете проверить несколько вариантов здесь:

  • Кодирование на сервере приложений. Например, на Tomcat, на всех разъемах убедитесь, что у вас есть URIEncoding установлен на UTF-8. Например .:

    <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" URIEncoding="UTF-8"/>

  • Как отправить JSON, вам нужно иметь как потребляет и производит набор для MediaType.APPLICATION_JSON_UTF8_VALUE
    (приложения/JSON, кодировка = UTF-8). Например:

@RequestMapping(value="/User", method=RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_UTF8_VALUE, produces=MediaType.APPLICATION_JSON_UTF8_VALUE )

  • В web.xml:

    <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

+0

сделано (я имею сервера пристань и не знаю, как настроить кодировку в качестве свойства для всех Запросы). не помогает :( – user2957954

0

На самом деле я принимаю ответ Юрия Yunikov.

Но если кто-то использует SoapUI, не забудьте установить кодировку запроса также там: like it is described here