e Call Protocol = SOAP. Os webservices do tipo SOAP sao mais simples de utilizar porque, no Genexus, estao associados a um objeto externo. Podemos encarar a coisa mais ou menos assim, imagina que uma procedure esta em uma Kb e foi pubicada como SOAP, em outra Kb, quando apontamos para este SOAP com o WSDL Import, o Genexus criara um objeto (External Object) com o mesmo nome desta procedure 'externa', permitindo que executemos esta procedure. Seria algo como, tornar uma procedure, que inicialmente encontra-se sob o escopo privado em uma Kb, como publica e acessivel para outras Kbs ou mesmo sistemas externos, nao Genexus.Agora quando falamos de REST a coisa muda um pouquinho. Praticamente o que temos e estilo para chamar recursos na Web mediante a definicao da operacao na URI, mas deixemos as discussoes quanto as diferencas para os filosofos da Internet, melhor focar na implementacao do Genexus para ambos os recursos.Genexus publica ambos os modelos para que possam ser acessados mediante chamadas HTTP ou HTTPS, SOAP vai se comunicar utlizando XML, e REST e mais flexivel, permitindo que a transferencia de informacoes ocorra tanto com XML, JSON, Texto, ou mesmo outro modelo qualquer.Em ambos os cenarios a questao da seguranca e muito importante, porque se estamos transferindo algo valioso entre sistemas, pela Web, com certeza algum bisbilhoteiro vai tentar interceptar a comunicacao. Desta forma se voce nao e adepto a certificados digitais SSL, esqueca este recurso, isto aqui nao e para voce. Bom, na verdade, as credenciais dos seus usuarios neste momento tambem estao expostas, neste caso.Programando RESTPara entender um pouco mais da programacao webservice Genexus com SOAP, recomendo a leitura do artigo http://www.genexando.com/2009/07/web-services.html, em que ja apresentamos um exemplo sobre este modelo.Quanto ao REST necessitamos explorar um pouco deste tema aqui no Genexando, pois o modo de programacao e bastante diferente.1) Seguranca e tudo!Primeiramennte e necessario entender um pouco a respeito da seguranca da chamada ao servico, e no caso do Genexus o GAM sempre e uma boa opcao para proteger tudo.No GAM e necessario realizar um login na aplicacao, controlado pelo protocolo OAuth implementado no recurso, e este cria um Token assim que se estabelece a conexao. Por meio deste Token sera possivel realizar as proximas conexoes com o servidor sem que se tenha de reenviar o usuario e senha. Por isso a importancia do protocolo SSL, pois a passagem dos parametros, principalmente neste momento deve estar completamente encriptada e protegida. GAM com http nao vai adiantar nada!Para procedermos e necessario fazer uso do tipo HttpClient do Genexus que permite configurar os parametros para a execucao do processo, que deve acontecer pela chamada POST ao servico /oauth/access_token. A seguir um exemplo de login no GAM.Event 'login' &httpclient.Host = 'localhost/' &httpclient.Port = 80 &httpclient.BaseUrl = '/Kb.NetEnvironment/oauth/' &addstring ='client_id=068868de058b4798bd3b90f696fa37f8&grant_type=password&scope=FullControl&username=admin&password=admin123' &httpclient.AddHeader("Content-Type", "application/x-www-form-urlencoded") &httpclient.AddString(&addstring) &httpclient.Execute('POST','access_token') &json = &httpclient.ToString() &AccessTokenSDT.FromJson(&json) &websession.set('TOKEN', &AccessTokenSDT.access_token)EndEventO valor de client_id informado deve ser obtido no GAM, na area Applications - Client Application Data.O retorno da chamada e no formato JSON, desta forma e necessario converter o texto recebido em um SDT. No nosso exemplo, algo como:Um exemplo