Não encontrei nenhum exemplo de como resolver meu problema, por isso quero pedir ajuda. Não posso simplesmente enviar uma solicitação POST usando o objeto RestTemplate no JSON
Toda vez que eu recebo:
org.springframework.web.client.HttpClientErrorException: 415 Tipo de mídia não suportado
Eu uso RestTemplate desta maneira:
...
restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> list = new ArrayList<HttpMessageConverter<?>>();
list.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(list);
...
Payment payment= new Payment("Aa4bhs");
Payment res = restTemplate.postForObject("http://localhost:8080/aurest/rest/payment", payment, Payment.class);
Qual é a minha culpa?
Respostas:
Essa técnica funcionou para mim:
Eu espero que isso ajude
fonte
.put()
évoid
!postForEntity(url, entity, String.class)
obras no lugar deput(url, entity)
Encontrei esse problema ao tentar depurar um terminal REST. Aqui está um exemplo básico usando a classe RestTemplate do Spring para fazer uma solicitação POST que eu usei. Demorei bastante tempo para reunir o código de diferentes lugares para obter uma versão funcional.
O analisador JSON em particular que meu ponto de extremidade restante estava usando aspas duplas necessárias em torno dos nomes de campos; é por isso que escapei das aspas duplas na minha requestJson String.
fonte
Eu tenho usado o resto modelo com JSONObjects da seguinte maneira:
fonte
Conforme especificado aqui , acho que você precisa adicionar um
messageConverter
paraMappingJacksonHttpMessageConverter
fonte
Se você estiver usando o Spring 3.0, uma maneira fácil de evitar a exceção org.springframework.web.client.HttpClientErrorException: 415 Tipo de mídia não suportado , é incluir os arquivos jar jackson no caminho de classe e usar o
mvc:annotation-driven
elemento config. Conforme especificado aqui .Eu estava puxando meu cabelo tentando descobrir por que o aplicativo mvc-ajax funcionava sem nenhuma configuração especial para o
MappingJacksonHttpMessageConverter
. Se você leu o artigo que eu vinculei acima de perto:fonte
O erro "415 Tipo de mídia não suportado" está informando que o servidor não aceitará sua solicitação POST. Sua solicitação está absolutamente correta, é o servidor que está configurado incorretamente.
MappingJacksonHttpMessageConverter
configurará automaticamente o cabeçalho do tipo de conteúdo da solicitação comoapplication/json
, e meu palpite é que seu servidor está rejeitando isso. Você não nos contou nada sobre a configuração do servidor, por isso não posso aconselhá-lo sobre isso.fonte
Estou fazendo assim e funciona.
// Passa os cabeçalhos aqui
Espero que isto ajude
fonte
Eu estava tendo esse problema e estou usando o RestTemplate do Spring no cliente e o Spring Web no servidor. Ambas as APIs têm um relatório de erros muito ruim, tornando-as extremamente difíceis de desenvolver.
Depois de muitas horas tentando todos os tipos de experimentos, descobri que o problema estava sendo causado ao passar uma referência nula para o corpo do POST, em vez da lista esperada. Presumo que RestTemplate não possa determinar o tipo de conteúdo de um objeto nulo, mas não reclame. Depois de adicionar os cabeçalhos corretos, comecei a receber uma exceção diferente do lado do servidor no Spring antes de inserir meu método de serviço.
A correção era passar uma lista vazia do cliente em vez de nulo. Nenhum cabeçalho é necessário, pois o tipo de conteúdo padrão é usado para objetos não nulos.
fonte
Este código está funcionando para mim;
fonte
Se você não quiser processar a resposta
Se você precisar de resposta ao processo
fonte
Para mim, ocorreu um erro nesta configuração:
AndroidAnnotations
Spring Android RestTemplate Module
e ...GsonHttpMessageConverter
As anotações do Android têm alguns problemas com isso convertidos para gerar
POST
solicitação sem parâmetro. Simplesmente parâmetronew Object()
resolveu isso para mim.fonte
Por que trabalhar mais do que você precisa?
postForEntity
aceita umMap
objeto simples como entrada. O seguinte funciona bem para mim enquanto escrevia testes para um determinado ponto de extremidade REST no Spring. Eu acredito que é a maneira mais simples possível de fazer uma solicitação JSON POST na primavera:fonte
Se você não deseja mapear o JSON sozinho, faça o seguinte:
fonte
Eu tentei o seguinte na inicialização da primavera:
fonte