3
respostas

Erro - aula 14.2 - HTTP Status 405 - Request method 'checkout=Finalizar+compraGET' not supported

Olá pessoal, tudo bem ?

Alguém está tendo esse erro que postei como título, isso acontece após ter implementado esse método da classe PagamentoController no método finalizar.

package br.com.casadocodigo.loja.controllers;

import java.util.concurrent.Callable;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import br.com.casadocodigo.loja.models.CarrinhoCompras;
import br.com.casadocodigo.loja.models.DadosPagamento;

@RequestMapping("/pagamento")
@Controller
public class PagamentoController {

    @Autowired
    private CarrinhoCompras carrinho;

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value="/finalizar", method=RequestMethod.POST)
    public Callable<ModelAndView> finalizar(RedirectAttributes model){
        return() -> {
            String uri = "http://book-payment.herokuapp.com/payment";

            try{
                String response = restTemplate.postForObject(uri, new DadosPagamento(carrinho.getTotal()), String.class);
                System.out.println(response);
                model.addFlashAttribute("sucesso", response);
                return new ModelAndView("redirect:/produtos");
            }catch (HttpClientErrorException e) {
                e.printStackTrace();
                model.addFlashAttribute("falha", "Valor maior que o permitido.");
                return new ModelAndView("redirect:/produtos");
            }
        };


    }

}
3 respostas

Oi Cesar,

Verifica se seu form que finaliza o pagamento está com method="post".

Abraço!

Olá Alberto, tudo bom ?

O meu método consta com method="post" mesmo.

Oi Cesar, então confere no dev tools do chrome ou do navegador que vc está utilizando se realmente a requisição está indo como post? O Spring MVC está dizendo que não está. Ainda acho que o problema está na página.