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")]
}
}
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.
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