Você está na página 1de 10

Consumindo Web Service com C# e Visual FoxPro

Autor: Saulo Morais

Crie um novo projeto do tipo ‘Class Library’.

Agora iremos adicionar uma referência ao Web Service que desejamos acessar. Para isto clique com o botão
da direita no seu projeto e clique na opção ‘Add Service Reference’
A janela a seguir será aberta. Adicione o WS que você deseja acessar ou utilize este do exemplo:
http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL e clique em Go.

Veja que na tela acima 1 serviço foi encontrado. Clique no botão ‘Advanced’.
Clique no botão ‘Add Web Reference’.

Na tela seguinte informe o endereço do WS e clique em Go To. Os métodos do WS serão apresentados logo
abaixo.
Clique em ‘Add Reference’ para adicionar a referência do WS ao projeto.

Abra o Solution Explorer e veja que foi adicionada uma ‘Web References’. É este objeto que iremos utilizar
para chamar as propriedades e métodos do WS.
Abra a classe ‘Class1.cs’ e adicione o código a seguir.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.ServiceModel;
using ClassLibrary4.com.cdyne.wsf;

namespace ClassLibrary4
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ProgId("ClassLibrary4.Class1")]

public class Class1


{

public Boolean prpRetorno = false;


public string prpMsgErro = "";
public string temperatura = "";
public string cidade = "";

public void consulta(string tcZip)


{
try
{
ClassLibrary4.com.cdyne.wsf.Weather ws = new
ClassLibrary4.com.cdyne.wsf.Weather();
ClassLibrary4.com.cdyne.wsf.WeatherReturn wr = ws.GetCityWeatherByZIP(tcZip);
this.temperatura = wr.Temperature;
this.cidade = wr.City;
this.prpRetorno = true;
}
catch (Exception e)
{
this.prpRetorno = false;
this.prpMsgErro = e.Message;
}
}

}
}

IMPORTANTE:

Na linha ‘namespace ClassLibrary4’ informe o nome do seu projeto. Se o seu projeto chamar ‘MeuWs’ altere
para ‘namespace MeuWs’. Em todos os outros locais do código que tiverem o nome ‘ClassLibrary4’ altere para
o nome do seu projeto.
ATENÇÃO! Os detalhes abaixo são bem importantes para conseguirmos acessar a classe pelo VFP. Clique com
o botão da direita no projeto e acesse as propriedades. A seguinte tela irá aparecer.

Na bba ‘Application’ clique em ‘Assembly Information’ e marque a opção ‘Make assembly COM-Visible’
Vá na aba ‘Build’ a marque a opção ‘Register for COM interop’ conforme abaixo.

Agora vamos construir nossa aplicação. Clique no menu ‘Build’ e na opção ‘Build Solution’. Se tudo estiver
certo uma DLL será criada na pasta Bin\Debug do seu projeto conforme imagem abaixo.

Junto com esta DLL serão criados mais 2 arquivos. No meu caso os arquivos são: ClassLibrary4.pdb e
ClassLibrary4.tlb. Caso estes arquivos não estejam na pasta você esqueceu de algo anteriormente.
Agora iremos consumir nossa biblioteca no VFP. Abra o ‘Object Browser’ e clique na opção ‘Open Type Library’
conforme abaixo.

Clique na aba ‘COM Libraries’ e clique no botão ‘Browse...’.


Localize o arquivo com extensão ‘TLB’ dentro da pasta Bin\Debug do seu projeto e clique em OK.

Vejam que já conseguimos ver a classe com as propriedades e métodos criados no C#.
Pronto! Agora basta criar um objeto baseado na biblioteca ClassLibrary4.Class1 e acessar neste caso o método
‘consulta’ criado na classe ‘Class1.cs’ no C#. Segue o código.
LOCAL loWeather as "ClassLibrary4.Class1"
loWeather = CREATEOBJECT("ClassLibrary4.Class1")
loWeather.consulta("90001") && 90001 is a ZipCode from Los Angeles
IF loWeather.prpRetorno = .T.
MESSAGEBOX(loWeather.cidade+CHR(13)+loWeather.temperatura+" ºF")
ELSE
MESSAGEBOX("Erro: "+loWeather.prpMsgErro,16)
ENDIF