Bom dia!
Estou criando uma API REST, com método POST para criar uma solicitação de compras.
Porém só obtenho o erro: erro internal servidor -500.
Segue meu fonte:
#Include “protheus.ch”
#Include “restful.ch”
WsRestful solicitacao Description “API para Solicitação de Compras”
WsData Pag AS Integer
WsData Qtd AS Integer
WsMethod POST CRIA Description "Cria uma nova solicitação de compra" Path "/"
End WsRestful
Return .T.
WsMethod POST CRIA WsService solicitacao
Local cBody := Self:GetContent()
Local oJson := JsonObject():New()
Local aCabec := {}
Local aItens := {}
Local aLinha := {}
Local cDoc := ""
Local aErro := {}
Local cErro := ""
Local cNum := ""
Local i := 0
Local lRet := .T.
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
Private lAutoErrNoFile := .T.
If Empty(cBody)
SetRestFault(400, "Nenhuma informação recebida no body.")
Return .F.
EndIf
If !oJson:FromJson(cBody)
SetRestFault(400, "Falha na leitura do JSON. Verifique a estrutura enviada.")
Return .F.
EndIf
cDoc := GetSXENum("SC1", "C1_NUM")
// Cabeçalho
AAdd(aCabec, {"C1_NUM" , cDoc})
AAdd(aCabec, {"C1_FILIAL" , xFilial("SC1"), Nil})
AAdd(aCabec, {"C1_TIPO" , "N", Nil})
AAdd(aCabec, {"C1_SOLICIT", oJson["solicitante"], Nil})
AAdd(aCabec, {"C1_EMISSAO", StoD(oJson["emissao"]), Nil})
For i := 1 To Len(oJson["itens"])
aLinha := {}
AAdd(aItens, {"C1_ITEM" , StrZero(i, 4), Nil})
AAdd(aItens, {"C1_PRODUTO", oJson["itens"][i]["produto"], Nil})
AAdd(aItens, {"C1_QUANT" , oJson["itens"][i]["quant"], Nil})
AAdd(aItens, {"C1_CONTA" , POSICIONE("SB1", 1, xFilial("SB1") + oJson["itens"][i]["produto"], "B1_CONTA"), Nil})
AAdd(aItens, {"C1_OBS" , oJson["itens"][i]["obs"], Nil})
AAdd(aItens, {"C1_PRIORI" , IIf(ValType(oJson["itens"][i]["priori"]) == "C", oJson["itens"][i]["priori"], "2"), Nil})
AAdd(aItens,)
Next i
Begin Sequence
MSExecAuto({|x,y| mata110(x,y)},aCabec,aItens,3)
If lMsErroAuto
aErro := GetAutoGRLog()
For i := 1 To Len(aErro)
cErro += aErro[i] + CRLF
Next i
SetRestFault(400, cErro)
lRet := .F.
Else
// Recupera o número gerado
If (i := Ascan(aCabec, {|x| x[1] == "C1_NUM"})) > 0
cNum := aCabec[i][2]
EndIf
Self:SetResponse("Solicitação criada com sucesso! Número: " + cNum)
EndIf
Recover Using oErro
SetRestFault(500, "Erro interno no servidor: " + oErro:Description)
lRet := .F.
End Sequence
Return lRet
poderiam me ajudar ?