Consumindo DataSnap Server com C#

Olá pessoal, mais um post sobre DataSnap com Delphi XE, agora eu vou demonstrar como consumir um método em um servidor DataSnap a partir de um cliente em C#.

Segue o código do nosso método responsável por fazer a requisição no servidor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private static string HttpGet(string url)
{
string result;

try
{
//Faz a requisicao a url montada acima.
using (var resp = WebRequest.Create(url).GetResponse())
{
var reader = new StreamReader(resp.GetResponseStream());
result = reader.ReadToEnd();
}
}
catch
{
throw new Exception("Ocorreu um erro!");
}

return result;
}

Método responsável por fazer a validação dos dados antes de realizar a solicitação no servidor.

1
2
3
4
5
6
7
8
9
10
11
private bool Validacao()
{
if (TxtCPF.Text.Trim() == string.Empty)
{
MessageBox.Show("Digite um CPF!");
TxtCPF.Focus();
return false;
}

return true;
}

Método principal da aplicação. Note que estou utilizando uma classe chamada JObject para fazer a conversão dos dados de retorno do servidor para um objeto em JSON, está classe está contida na Class Library Newtonsoft.Json.dll para trabalhar com dados em JSON. Segue o link do projeto para download Json.NET. Estou utilizando está classe pois achei bem simples a forma de utilização.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
private void BtnValidar_Click(object sender, EventArgs e)
{
//Verifica se o campo CPF foi digitado.
if (!Validacao()) return;

//Caminho do servidor de aplicacao.
const string servidor = @"http://localhost:8081/datasnap/rest/";

//Metodo que sera consumido.
const string metodo = @"TServerFunctions/validateCPF/";

//Parametros do metodo.
var parametro = TxtCPF.Text.Trim();

//URL que sera processada.
var url = string.Format("{0}{1}{2}", servidor, metodo, parametro);

string pagina;
try
{
//Faz a requisicao a url montada acima.
pagina = HttpGet(url);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);

return;
}

//Verifica se o metodo retornou algum valor.
if (pagina == null) return;

//Le os dados de retorno do servidor passando para JSON.
var obj = JObject.Parse(pagina);

//Verifica o retorno do metodo.
//E mostra para o usuario.
var array = (JArray)obj["result"];
if ((bool)array[0])
MessageBox.Show(@"CPF valido!");
else
MessageBox.Show(@"CPF invalido!");
}

Este foi mais um post de integração usando DataSnap espero que tenham gostado.