Hi,

Use this Example code

Class Rest.UsuarioSvc Extends %CSP.REST
{

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
<Route Url="/Oi/:xpto" Method="GET" Call="Oi"/>
</Routes>
}

ClassMethod Oi(xpto As %String) As %Status
{
    Set tSC = $$$OK
    
    If 'tSC Quit tSC       
    Set tProxy = ##class(%ZEN.proxyObject).%New()
    Set tProxy.Oi = xpto _ "1234"
    
    Set %response.ContentType = "application/json"
    set %response.Status = 200
    Do tProxy.%ToJSON()
    
    Quit tSC
}

}
 

Class Rest.EmailSvc Extends %CSP.REST
{

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
    <Route Url="/TesteQuery/" Method="GET" Call="TesteQueryString"/>
</Routes>
}

ClassMethod TesteQueryString() As %Status
{
    Set tSC = $$$OK
    
    If 'tSC Quit tSC       
    Set tProxy = ##class(%ZEN.proxyObject).%New()
    Set tProxy.Discipline = $Get(%request.Data("Discipline", 1))
    Set tProxy.TestCode = $Get(%request.Data("TestCode", 1))
    
    Set %response.ContentType = "application/json"
    set %response.Status = 200
    Do tProxy.%ToJSON()
    
    Quit tSC
}

}
 

At first your code is correct.

Here's a MOC created when I developed this kind of integration.
Class HslBus.Msg.AdService.ValidaLogin.Response Extends %Persistent
{

Property LoginAtivo As %Boolean;

}

In Other Class I'm created this Method:

ClassMethod ValidarLogin(pRequest As HslBus.Msg.AdService.ValidaLogin.Request, Output pResponse As HslBus.Msg.AdService.ValidaLogin.Response) As %Status
{
set pResponse = ##class(HslBus.Msg.AdService.ValidaLogin.Response).%New()
set BaseDN="DC=Server,DC=pvt"
set Filter="(&(objectCategory=person)(objectClass=user) (sAMAccountname=" _ pRequest.Usuario.Login _ "))"

set Attributes=""
set ServerTimeout=5000

set LD=##Class(%SYS.LDAP).Init("hsl.pvt",389)


Set Status0=##Class(%SYS.LDAP).Binds(LD,"",$lb(pRequest.Usuario.Login,"Server.pvt",pRequest.Usuario.Senha),$$$LDAPAUTHNEGOTIATE)
set checkFilter=##class(%SYS.LDAP).CheckFilter(LD,Filter)

set Status=##Class(%SYS.LDAP).SearchExts(LD,BaseDN,$$$LDAPSCOPESUBTREE,Filter,"",0,"","",10,0,.SearchResult)

if (Status = $$$LDAPSUCCESS){
set pResponse.LoginAtivo = 1
}
else{
set pResponse.LoginAtivo = 0
}

quit $$$OK
}


To verify this type of support when I developed an LDAP integration I used the LDAP Admin available at http://www.ldapadmin.org/
If you also do not connect to AD, check with the infrastructure team if AD is enabled to receive LDAP connections.

Hi.

there is no way to know which is the last line, since each
  return line becomes a message in a unique single session on the bus.

To have control over the data packet returned by the database, in this case it would be interesting to return the data through a BusinessOperation and iterate over the list returned through a Business Process.

Sorry for the mistakes because this message was translated by Google Translate

Hi in this case I have already used a function that returns a string, with this I came to a utility very similar to the switch case of other languages Sorry for the possible inconsistency in the response, it was translated by google translator

Example:

Class Case.Teste Extends %SerialObject
{

ClassMethod Teste(pReq As %Integer)
{
WRITE $CASE(pReq,
              1:..Oi(),2:..Tchau(),: ..GOKU())
}

ClassMethod Oi() As %String
{
Quit "OI sou do Brasil"
}

ClassMethod Tchau() As %String
{
Quit "Um abraço"
}

ClassMethod GOKU() As %String
{
Quit "Oi Eu sou o GOKU"
}

Storage Default
{
<StreamLocation>^Case.TesteS</StreamLocation>
<Type>%Library.CacheSerialState</Type>
}

}

USER>do ##Class(Case.Teste).Teste(1)
OI sou do Brasil


USER>do ##Class(Case.Teste).Teste(2)
Um abraço


USER>do ##Class(Case.Teste).Teste(3)
Oi Eu sou o GOKU


USER>