Protheus Api RestFull - Demora ao responder requisição

Olá a todos.

Levantei um serviço Rest e comecei a fazer alguns testes, porém está havendo uma demora na resposta quando o retorno começa a crescer. No primeiro exemplo abaixo a resposta do serviço é "instantânea". Já no segundo exemplo o retorno é imediato, porém o navegador continua processando. Quando integro a Api a uma aplicação web o segundo exemplo causa um erro devido a demora na resposta.

Exemplo 1: img1.png

Exemplo 2:

img2.png

Api Rest:

#Include 'Protheus.ch'
#Include 'restful.ch'

ser Function WEBSERVICE_TESTE()
Return

WSRESTFUL WEB_TESTE DESCRIPTION "Serviço REST para WEB_TESTE"
    WSDATA usuario         As String
    WSDATA senha        As String

    WSMETHOD GET login     DESCRIPTION "Retorna se o usuário é válido"     WSSYNTAX "/WEB_TESTE/login"     PATH "/login"

END WSRESTFUL

WSMETHOD GET login WSRECEIVE usuario,senha WSSERVICE WEB_TESTE
    Local cUsuario     := Self:usuario
    Local cSenha     := Self:senha
    Local aArea        := GetArea()
    Local cJson       := ""
    Local nRetorno     := ""
    Local jsonMont    := JsonObject():new()
    ::SetContentType("application/json")

    if(cUsuario =="teste")
        nRetorno := '{"id":1,"codigo":"12345"}'
    elseif(cUsuario =="teste1")
        nRetorno := '{"id":1,"codigo":"12345","nome":"teste1","cargo":"gerente", "cc":"999999999"}'
    endif

    jsonMont:fromJson(nRetorno)
    cJson := FWJsonSerialize(jsonMont)
    ::SetResponse(cJson)
    freeObj(jsonMont)
    RestArea(aArea)
Return(.T.)

Configuração do serviço:


[rest]
SourcePath=E:\TOTVS12\Microsiga\Protheus\apo\rest\rest
RootPath=E:\TOTVS12\Microsiga\protheus_data
StartPath=\system\
x2_path=
RpoDb=top
RpoLanguage=Portuguese
RpoVersion=120
LocalFiles=CTREE
Trace=0
localdbextension=.dtc
TopMemoMega=10
PictFormat=DEFAULT
DateFormat=DEFAULT
MAXLOCKS= 30000
SpecialKey=PRD

[TopConnect]
DataBase=MSSQL
Server=localhost
ALIAS=PRODUCAO
PROTHEUSONLY=0
driver=totvsapi.dll

[Drivers]
Active=TCP

[TCP]
TYPE=TCPIP
Port=2564


[General]
InstallPath=E:\TOTVS12\Protheus
ConsoleLog=0
CtreeMode=Server
MAXSTRINGSIZE=10
CtreePreImg=1 



[MAIL]
Protocol=POP3


[HTTP] 
ENABLE=1 
PORT=87 
PATH=C:\TOTVS 12\help-online 
ENVIRONMENT=rest

[GENTCPIP]
Enable=0


[HTTPV11] 
Enable=1 
Sockets=HTTPREST 

[HTTPREST] 
Port=8084
IPsBind=
URIs=URIHTML
SECURITY=0

[URIHTML]
URL=/html-protheus/rest
PrepareIn=01,00
Instances=1,1
CORSEnable=1
AllowOrigin=*

[ONSTART]
jobs=HTTPJOB
RefreshRate=120

[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=rest
compartilhar
  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!

3 respostas

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