Cálculo incorreto do content-length de body com caracteres especiais causando erro 500 em requisições rest

Boa tarde!

Estou com um problema em algumas requisições de REST que estão retornando erro 500. Investigando um pouco mais, vi que está relacionado a utilização de caracteres especiais no json body.

Exemplo:

{
   "nome": "João"
}

Tratando esse json com a função noAcento() tive sucesso na requisição (apesar de perder a acentuação dos nomes em geral)... mas tem um outro caso que não encontrei saída:

{
   "nome": "João 1º"
}

Após utilizar o noAcento obtenho:

{
   "nome": "Joao 1º"
}

Ao enviar esse body o protheus calcula o len como 18 e adiciona essa info no Content-length, causando erro 500 devido a diferença de comprimento da string (content-length diferente do tamanho do json body)... No Postman é calculado como 19, e lá a requisição é feita com sucesso. Joguei a string no notepad++ e lá também é calculado igual o postman (19)

Alguém teve algum problema parecido? Tentei tratamento com encode utf8 mas bagunça um pouco mais a string. Parece que o calculo do len não calcula corretamente quando existe ª e º.

Obrigado

compartilhar
  • Rodrigo, nesse caso você é o client ou o server? Tem um exemplo para reprodução do problema?

    Daniel Mendes   13 de Nov de 2020
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags rest caracteres especiais ou faça a sua própria pergunta.