Нет HttpMessageConverter для [com.example.blog.SnapEngChatRequest] и типа контента [application / x-www-form-urlencoded] - PullRequest
0 голосов
/ 23 апреля 2019

Я хотел вызвать API сообщения с заголовком в кодировке URL-адреса.Вот мой код

 var data = SnapEngChatRequest(
            widgetId = widgetId,
            visitorMessage = "Test"
    )

    val headers = HttpHeaders()

    headers.set("x-api-key", apiKey)
    headers.set("Content-Type", "application/x-www-form-urlencoded")

    val entity = HttpEntity(data, headers)

    val converter = FormHttpMessageConverter()
    converter.supportedMediaTypes = singletonList(MediaType.APPLICATION_FORM_URLENCODED)
    restTemplate.messageConverters.add(converter)

    val result = restTemplate.exchange(
            url,
            HttpMethod.POST,
            entity,
            String::class.java
    )

Но, к сожалению, он не работает, и я получаю ошибку ниже

No HttpMessageConverter for [com.example.blog.SnapEngChatRequest] and content type [application/x-www-form-urlencoded]
org.springframework.web.client.RestClientException: No HttpMessageConverter for [com.example.blog.SnapEngChatRequest] and content type [application/x-www-form-urlencoded]

Здесь я даю httpMessageConverter, но я не уверен, почемуэто не принимает или я не уверен, что я делаю что-то не так здесь.Я перепробовал все возможное.Любая помощь будет полезна, спасибо!

1 Ответ

1 голос
/ 23 апреля 2019

Из документации для FormHttpMessageConverter он может:

... прочитайте и напишите тип носителя "application / x-www-form-urlencoded" как MultiValueMap

Так что он не может прочитать это из POJO. Отправьте ваши данные так:

val data = LinkedMultiValueMap(
  mapOf("widgetId" to listOf(widgetId), "visitorMessage" to listOf("Test"))
)
...