PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Erro 428 - Required Condition
Versão:
12.1.33
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário PSNEVES PSNEVES em 22/06/2022, 09:56 h
Local: ES  Registro: 20/05/2022  Postagens: 7
Bom dia, gente. Tudo bem? Estou caminhando ainda no ADVPL e estou com dúvidas relacionados a uma API. Estou fazendo um Método POST, com link HTTPS, porém, quando quando envio via postman aparece erro 428 - Precondition Required. Alguém poderia me ajudar? Segue o POST e o JSON. PErdão se postei algo no local errado, sou novo no Forum.

{
    "Paciente":{
        "Codigo" : "",
        "NomePaciente": "Paulo Autopecas",
        "Loja": "01",
        "Endereco":"La ele",
        "Municipio":"Linhares",
        "Estado":"ES",
        "TipoFiscal":"F"
    } ,
    "CodHospital":"20001W",
    "CodMedico":"ME000101",
    "CodProcedimento":"000008",
    "CodConvenio":"CASSI",
    "Telefone":"2733734969",
    "Material":"Faquinha de Serra",
    "Observacao": "Amolar a Faca",
    "Situacao": "Urgente",
    "Imagem":"testar depois"
}

WSMETHOD POST SetMarcacao WSSERVICE WSMARCACAO



Local oJson      := JsonObject():new()
Local oPaciente := JsonObject():new()
Local oHashRet     := THashMap():New()
Local lPost      := .T.



Local cPaciente        := ‘‘
Local cHospital        := ‘‘
Local cMedico           := ‘‘
Local cProcedimento     := ‘‘
Local cConvenio        := ‘‘
Local cMaterial        := ‘‘
Local cObs              := ‘‘
Local cSituacao        := ‘‘
Local cImg              := ‘‘



Local cNomeHosp        := ‘‘
Local cNomeMedico       := ‘‘
Local cNomeProc        := ‘‘
Local cNomeConv        := ‘‘
Local cDecode64        := ‘‘

Local cNome        := ‘‘
Local cLoja        := ‘‘
Local cEndereco     := ‘‘
Local cMunicipio    := ‘‘
Local cEstado       := ‘‘
Local cTipo        := ‘‘
Local nOpc          := 3
Local cArqAuto      := ‘‘


Local aSUS     := {}

Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.


oJson:fromJson(::GetContent())

// cPaciente             := oJson:GetJsonText("CodPaciente")
cHospital          := oJson:GetJsonText("CodHospital")
cMedico        := oJson:GetJsonText("CodMedico")
cProcedimento   := oJson:GetJsonText("CodProcedimento")
cConvenio       := oJson:GetJsonText("CodConvenio")
cTelefone       := oJson:GetJsonText("Telefone")
cMaterial       := oJson:GetJsonText("Material")
cObs            := oJson:GetJsonText("Observacao")
cSituacao       := oJson:GetJsonText("Situacao")
cImg            := oJson:GetJsonText("Imagem")

oPaciente := oJson:GetJsonText("Paciente")

cPaciente   := oPaciente:oJson:GetJsonText("CodPaciente")
cNome       := oPaciente:oJson:GetJsonText("NomePaciente")
cLoja       := oPaciente:oJson:GetJsonText("Loja")
cEndereco   := oPaciente:oJson:GetJsonText("Endereco")
cMunicipio := oPaciente:oJson:GetJsonText("Municipio")
cEstado     := oPaciente:oJson:GetJsonText("Estado")
cTipo       := oPaciente:oJson:GetJsonText("TipoFiscal")

Do Case
     // Case cPaciente == nil .Or. Empty(cPaciente)
     //      SetRestFault(400, "Parametro de Paciente nao informado")
     //      lPost := .F.
     Case cHospital      == nil .Or. Empty(cHospital)
          SetRestFault(400, "Parametro de Hospital nao informado")
          lPost := .F.
     Case cMedico      == nil .Or. Empty(cMedico)
          SetRestFault(400, "Parametro de Medico nao informado")
          lPost := .F.
     Case cProcedimento      == nil .Or. Empty(cProcedimento)
          SetRestFault(400, "Parametro de Procedimento nao informado")
          lPost := .F.
     Case cConvenio      == nil .Or. Empty(cConvenio)
          SetRestFault(400, "Parametro de Convenio nao informado")
          lPost := .F.
     Case cSituacao == nil .Or. Empty(cSituacao)
          SetRestFault(400, "Parametro de Situação nao informado")
          lPost := .F.    
EndCase


If cPaciente == ‘‘
    Do Case
     Case cNome == nil .Or. Empty(cNome)
          SetRestFault(400, "Razão cNome Não Informado!")
          lPost := .F.
    Case cLoja == nil .Or. Empty(cLoja )
          SetRestFault(400, "Loja não Informada!")
          lPost := .F.
     Case cEndereco      == nil .Or. Empty(cEndereco )
          SetRestFault(400, "Endereço não Informado!")
          lPost := .F.
     Case cMunicipio      == nil .Or. Empty(cMunicipio)
          SetRestFault(400, "Município não Informado!")
          lPost := .F.
     Case cEstado      == nil .Or. Empty(cEstado)
          SetRestFault(400, "Estado não Informado!")
          lPost := .F.
     Case cTipo      == nil .Or. Empty(cTipo)
          SetRestFault(400, "Tipo Fiscal Não Informado!")
          lPost := .F.

    EndCase
Endif


conout("Sincronizando Marcacao " )
DbSelectArea("SUS")
If lPost
    If Empty(cPaciente)

        aAdd(aSUS, {"US_NOME"      , Upper(cNome)                             , NIL})
        aAdd(aSUS, {"US_LOJA"      , cLoja                                    , NIL})
        aAdd(aSUS, {"US_END"       , Upper(cEndereco)                         , NIL})
        aAdd(aSUS, {"US_MUN"       , Upper(cMunicipio)                        , NIL})
        aAdd(aSUS, {"US_EST"       , Upper(cEstado)                           , NIL})
        aAdd(aSUS, {"US_TIPO"      , Upper(cTipo)                             , NIL})

        MSExecAuto({|x,y| TMKA260(x,y)}, aSUS,nOpc)

        If lMsErroAuto
            cArqAuto := NomeAutoLog()
            sErro    := memoread ( cArqAuto )
            SetRestFault(400, sErro)
            lPost := .F.
        EndIf       
    EndIf     
EndIf

//BUSCAR PACIENTE CADASTRADO
If lPost
    SUS->(DbSetOrder(2))
    If SUS->((MsSeek(xFilial("SUS") + cNome)))
        cPaciente := SUS->US_COD
    Else
        SetRestFault(400, "Codigo do paciente invalido!")
        lPost := .F.
    EndIf
EndIf


//Validando codigo do hospital
If lPost
    DbSelectArea("SA1")
    DbSetOrder(1)
    If SA1->(MsSeek(xFilial(‘SA1‘) + cHospital + A1_LOJA ) )
        cNomeHosp := SA1->A1_NOME
    Else
        SetRestFault(400, "Codigo do Hospital invalido!")
        lPost := .F.
    EndIf
EndIf

//Validando codigo do medico

If lPost
    DbSelectArea("SA2")
    DbSetOrder(1)
    If SA2->(MsSeek(xFilial(‘SA2‘) + cMedico ) )
        cNomeMedico := SA2->A2_NOME
    Else
        SetRestFault(400, "Codigo do Medico invalido!")
        lPost := .F.
    EndIf
EndIf

//Valida codigo do procedimento
If lPost
    DbSelectArea("SZ2")
    DbSetOrder(1)
    If SZ2->(msSeek(xFilial(‘SZ2‘) + cProcedimento ) )
        cNomeProc := SZ2->Z2_DESC
    Else
        SetRestFault(400, "Codigo do Procedimento invalido!")
        lPost := .F.
    EndIf
EndIf

//Validando codigo Convenio
If lPost
    DbSelectArea("SX5")
    DbSetOrder(1)
    If SX5->(msSeek(XFILIAL(‘SX5‘) + "ZW" + cConvenio ) )
        cNomeConv := SX5->X5_DESCRI
    Else
        SetRestFault(400, "Codigo do Procedimento invalido!")
        lPost := .F.
    EndIf
EndIf

If lPost
//Valida formato da imagem
    //Se a pasta de arquivos não existir, cria.
    If !EXISTDIR("C:\TEMP\" )
        MAKEDIR("C:\TEMP\" )
    Endif
Endif

If lPost
    If !Empty(cImg)
        cArquivo := "C:\teste\arquivo.txt"
        cMensagem := "Log de Teste"
        //cDecode64 := Decode64(cImg,"\SYSTEM\download.jpg",.F.)
    Endif
EndIf

If lPost     

    BeginTran()
    DbSelectArea("ZZO")
    RecLock("ZZO",.T.)

        ZZO->ZZO_FILIAL     := xFilial("ZZO")
        ZZO->ZZO_CODIGO     := GetSXENum("ZZO","ZZO_CODIGO")
        ZZO->ZZO_SOLIC      := cPaciente
        ZZO->ZZO_NSOLIC     := cNome
        ZZO->ZZO_HOSP       := cHospital
        ZZO->ZZO_NHOSP      := cNomeHosp
        ZZO->ZZO_MEDIC      := cMedico
        ZZO->ZZO_NMEDIC     := cNomeMedico
        ZZO->ZZO_PROCED     := cProcedimento
        ZZO->ZZO_NPROCE     := cNomeProc
        ZZO->ZZO_CONV       := cConvenio
        ZZO->ZZO_NCONV      := cNomeConv
        ZZO->ZZO_MAT        := cMaterial
        ZZO->ZZO_OBS        := cObs
        ZZO->ZZO_SITUAC     := cSituacao
        ZZO->ZZO_IMG        := cDecode64

        ZZO->(MsUnlock())


        lPost := .T.
    EndTran()
    
     ::SetContentType("application/json")     
     //oHashRet:Set("ErrorCode", 201)     
     oHashRet:Set("ErrorMessage", "Procedimento Realizado com Sucesso")
     
     cJson := FWJsonSerialize(oHashRet, .F.)
     FreeObj(oJson)
     //FreeObj(oAloc)
     FreeObj(oHashRet)
                              
     ::SetResponse(EncodeUTF8(cJson, "cp1252"))

Else
     SetRestFault(400, "Falha ao Cadastrar MArcacao")
    DisarmTransaction()
EndIf

Return lPost



Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ARISSATO ARISSATO em 23/06/2022, 12:20 h
Local: SP  Registro: 12/08/2008  Postagens: 8
Boa tarde.
Dá uma olhada nesses links da Totvs, sobre autorização/segurança no acesso as API´s.

https://tdn.totvs.com/pages/viewpage.action?pageId=465383509
https://tdn.totvs.com/display/tec/Utilizando+o+Protocolo+oAuth2
https://tdn.totvs.com/pages/viewpage.action?pageId=268570110

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal