Ajuda com FWREST

Boa tarde, tudo certo?? Estou fazendo uma API POST onde envio um pedido de venda atualizado para um terceiro. O JSon monta de forma correta e até a hora do envio eu consigo ver meu json populado, porém, a API do terceiro me retorna erro 500 e ele me fala que o objeto lá chegou vazio. Quando gero via debug a string do json via vscode eu consigo fazer o post normalmente, porém, via protheus não vai. Alguém consegue me ajudar?? Segue abaixo trecho do código responsável pelo envio json

  aHeader := {}

    AAdd(aHeader, "Content-Type: application/json; charset=UTF-8")
    AAdd(aHeader, "Accept: application/json")
    AAdd(aHeader, "User-Agent: Mozilla/4.0 (compatible; Protheus ' + GetBuild() + ')')")
    Aadd(aHeader,'Authorization: Bearer ' + cToken)


    // cPostParms:= oJson:ToJson()
    // sPostRet := HttpPost( cUrlApi + cEndPoint , "", cPostParms, 240, aHeader, @cError )
    // varinfo( "Header", aHeader )
    // if !empty( sPostRet )
    //     conout( "HttpPost OK" )
    //     varinfo( "WebPage", sPostRet )
    // else
    //     conout("HttpPost Failed.")
    // endif


    //  // INFORMA O RECURSO E INSERE O JSON NO CORPO (BODY) DA REQUISIÇÃO
    oRest:nTimeOut := 240000
    //cJson := oJson:ToJson()
    //cTexto := FWNoAccent()
    oRest:SetPath(cEndPoint)
    oRest:SetPostParams(oJson:ToJson())


    // REALIZA O METODO POST E VALIDA O RETORNO
// For nI := 1 To 5
    if oRest:Post(aHeader)
        cError := ""
        nStatus := HTTPGetStatus(@cError)
        oRest:GetResult()
        if  ! nStatus >= 200 .And. nStatus <= 299
        //     MsgInfo("Registro enviado ao MobAgile.")
        // else
            MsgStop("Falha ao Enviar Dados: " + cError)
            lRetorno := .F.
        endif
    else
        lRetorno := .F.
        oParseJSON  := JsonObject():new()
        oParseJSON:fromJson(oRest:CRESULT)
        If(Valtype(oParseJSON:GetJsonText("message")) == "U")
            MsgStop("Falha ao Enviar Dados: " + oRest:getLastError() + CRLF + DecodeUTF8(oRest:getResult(), "cp1252"))
        Else
            MsgStop("Falha ao Enviar Dados: " + oRest:getLastError() + CRLF + DecodeUTF8(oParseJSON:GetJsonText("message"), "cp1252"))
        EndIf            
    endif
compartilhar
  • Olá. Como assim gera a string do json via Debug? Quais seriam as diferenças? Poderia colocar o json gerado via debug e o json que você gera via debug anexos? Quando você diz via debug, é exatamente o mesmo código?

    Daniel Mendes   02 de May de 2023
  • Boa tarde, então eu pego o json gerado via debug na linha oRest:SetPostParams(oJson:ToJson()) e uso ele no postman. Quando eu mando via postman retorna 200 ok, quando envio pelo protheus vem o erro 500.

    psneves   03 de May de 2023
  • usa wireshark pra ver a diferenća entre o que é enviado pelo protheus e o que vc consegue normal

    VINICIUS GATI   03 de May de 2023
  • Muito obrigado, Vinicius. Vou procurar sobre a ferramenta e utilizar aqui.

    psneves   03 de May de 2023
  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!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl fwrest json post ou faça a sua própria pergunta.