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
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 2023Boa 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 2023usa wireshark pra ver a diferenća entre o que é enviado pelo protheus e o que vc consegue normal
— VINICIUS GATI 03 de May de 2023Muito obrigado, Vinicius. Vou procurar sobre a ferramenta e utilizar aqui.
— psneves 03 de May de 2023