Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao transformar xml em objeto.

Olá a todos. Estou direcionando uma rota do camel para minha api do Laravel em formato de XML. Porem ao pegar essa string e tentar transformar em objeto o camel me devolve um erro 500.

Segue o código camel java:

from("activemq:queue:oportunidade").
                    routeId("rota-oportunidade").
                    unmarshal().xmljson().
                    setHeader(Exchange.HTTP_METHOD, HttpMethods.POST).
                    setHeader(Exchange.CONTENT_TYPE, constant("text/xml")).
                    log("${id} - ${body}").
                  .
                to("http4://localhost:8000/api/oportunidade");

Laravel recebendo:

public function store(){
        $xml = new Xml();

        $dados = file_get_contents('php://input'); // Pega todos os dados
        $xml->setTexto($dados);

        $objetoxml = simplexml_load_string($dados); // ERRO OCORRE SOMENTE QUANDO ADICIONO ESSA LINHA 

        EntityManager::persist($xml);
        EntityManager::flush();

        return response('Oportunidade Salva', 202)
            ->header('Content-Type', 'text/plain');
    }

Quando adiciono aquela linha ocorre o erro 500 logo não consigo salvar os dados do meu objeto somente o texto puro. Alguem consegue me dar uma luz?

obs: Enviando a mesma string xml pelo postman ocorre tudo certo

1 resposta
solução!

Pessoal, resolvi a questão. A string pelo método de captura file_get_contents estava me retornando caracteres especiais sem UTF-8.

Com a adiçao da linha

 $dados = iconv(mb_detect_encoding($dados, mb_detect_order(), true), "UTF-8", $dados);

Passei a receber os caracteres da maneira correta e então converter em objeto e fazer todas as demais funções necessárias. Valeu