⏱️Tempo aproximado para leitura: 00:05:00 min
Ocorrência
No módulo de Integração com Aplicativos Externos, ao tentar enviar uma solicitação via TOTVS Fluig, é apresentada uma mensagem de erro. O erro específico retornado é SOAPFaultException: Marshalling Error: Error writing request body to server. Esse problema impede a conclusão do processo de integração adequadamente.
Ambiente
TOTVS Fluig Plataforma - Desenvolvimentos - Todas as versões
Causa
Esse incidente ocorre, pois o parâmetro de configuração disable.chunking não está definido corretamente. Essa configuração é crucial em integrações com sistemas que não suportam o protocolo HTTP/1.1, como o Protheus.
Solução
Para garantir que o envio das requisições ocorra de forma adequada, siga os passos para configurar o cliente personalizado:
- Localize o arquivo onde será feita a chamada do web service.
- Utilize o método
getCustomClient, localizado no provider do serviço, que pode ser obtido viaServiceManager. - Crie um mapa de parâmetros e configure o parâmetro disable.chunking como true, conforme o snippet abaixo:
var properties = {}; properties["basic.authorization"] = "true"; properties["basic.authorization.username"] = "username"; // Substitua 'username' pelo nome de usuário real properties["basic.authorization.password"] = "password"; // Substitua 'password' pela senha real properties["disable.chunking"] = "true"; // Desabilita o envio de requisições grandes em pedaços properties["log.soap.messages"] = "true"; properties["receive.timeout"] = "60000"; // Timeout da requisição var supplierService = ServiceManager.getService('[Nome do serviço]'); // Substitua pelo nome real do serviço var serviceHelper = supplierService.getBean(); var serviceLocator = serviceHelper.instantiate('net.webservicex.Periodictable'); var service = serviceLocator.getPeriodictableSoap(); var customClient = serviceHelper.getCustomClient(service, "net.webservicex.PeriodictableSoap", properties); var result = customClient.getAtoms();
Os parâmetros que podem ser definidos incluem:
- basic.authorization: Quando definido como true, aplica as configurações de autenticação.
- basic.authorization.username: Usuário a ser utilizado para autenticação básica.
- basic.authorization.password: Senha do usuário utilizado para autenticação básica.
- disable.chunking: Desabilita o envio de requisições grandes em pedaços.
- log.soap.messages: Permite que as mensagens SOAP sejam registradas no log do servidor.
- receive.timeout: Define o timeout da requisição.
Importante: O tempo de timeout padrão deve ser suficiente para integrações convencionais. Caso precise alterá-lo, verifique a necessidade real, considerando a otimização do código e dimensionamento do servidor para melhorar a performance.
Após seguir estes passos e configurar corretamente o parâmetro disable.chunking, o serviço deverá funcionar corretamente sem gerar o erro mencionado.
Para mais informações, consulte a Documentação: Integração com Aplicativos Externos - WebService com client personalizado
0 Comentários