Возврат контроллера упора пружины 406 НЕ подходит для текста / обычного текста - PullRequest
2 голосов
/ 22 апреля 2020

У меня проблема с контроллером покоя и текстом / простым текстом. Я прочитал много ответов здесь и попробовал много Решений без успеха. У меня есть контроль покоя, который должен возвращать строку как текст / обычный. Вот мой контроллер:

@RestController
@RequestMapping(value = "/content", headers="Accept=*/*",  
produces={"text/plain", "application/json"})
public class MyController {

@GetMapping(value = "", produces = {MediaType.TEXT_PLAIN_VALUE, MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<String> getContent() {
    return ResponseEntity.ok("a,b,c\n1,2,3\n3,4,5");
}

, поэтому, когда я звоню вот так:

https://localhost:9002/rest/v2/content -H "accept: text/plain"

я получаю 406 неприемлемый ответ с сообщением: не удалось найти приемлемое представление

Но с:

https://localhost:9002/rest/v2/content -H "accept: application/json"

я получил ожидаемый результат с:

content-type: text/plain

в заголовке ответа.

Я попытался настроить ContenNegociationManager в моем WebMvcConfigurationSupport как это:

@Override
public void configureContentNegotiation(final ContentNegotiationConfigurer configurer)
{
    configurer.favorPathExtension(false).
            favorParameter(false).
            parameterName("mediaType").
            ignoreAcceptHeader(false).
            useJaf(false).
            defaultContentType(MediaType.APPLICATION_JSON).
            mediaType("properties", MediaType.TEXT_PLAIN);
}

Я также пытался с:

mediaType("plain", MediaType.TEXT_PLAIN);

, и я все еще получаю тот же Ответ 406.

Мой список конвертеров определяется как:

<util:list id="myConverters">
    <ref bean="customJsonHttpMessageConverter"/>
    <ref bean="customXmlHttpMessageConverter"/>
</util:list>

<bean id="customJsonHttpMessageConverter" parent="jsonHttpMessageConverter">
    <property name="jaxbContextFactory" ref="customJaxbContextFactory" />
</bean>

<bean id="customXmlHttpMessageConverter" parent="xmlHttpMessageConverter">
    <property name="jaxbContextFactory" ref="customJaxbContextFactory" />
</bean>

и в Конфигурации:

@Override
protected void configureMessageConverters(final List<HttpMessageConverter<?>> converters)
{
    converters.addAll(myConverters);
}

Есть у кого-нибудь, может быть, идея, чего мне здесь не хватает? Спасибо

1 Ответ

0 голосов
/ 22 апреля 2020

Спасибо @CodeScale за подсказку. Я исправил это, добавив StringHttpMessageConverter к моим конвертерам.

@Override
protected void configureMessageConverters(final List<HttpMessageConverter<?>> converters)
{
    myConverters.add(new StringHttpMessageConverter());
    converters.addAll(myConverters);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...