Internet Transfer Control (Inet) – Transferindo arquivos com o VB


1-Introdução
2-Propriedades , métodos e Eventos
3-Usando o INET na prática


Não é novidade que a internet cresce dia a dia . A habilidade para usar documentos e artigos armazenados nos computadores na grande Web é de fundamental importância nestes dias. O Visual Basic tem se mostrado uma linguagem versátil com relação ao desenvolvimento para WEB, e, não poderia faltar em nos dispor uma ferramenta para acessar arquivos na Internet.

O Visual Basic possui o um controle ActiveX que torna o acesso a arquivos muito fácil de realizar, estamos falando do Internet Transfer Control - INET para os íntimos. Ele permite enviar e recepcionar arquivos e documentos usando o protocolo FTP ou o protocolo HTTP. Permite também renomear e deletar arquivos usando os comandos DELETE e RENAME quando voce se conecta a um host FTP.

Usar o INET é muito simples. Primeiro definimos as propriedades relacionadas com a conexão a ser feita com o host: protocolo, username, password, nome do servidor remoto (remote server name) , etc.Feito isto podemos usar os métodos do controle para recuperar/restaurar arquivos ou enviar comandos.

O controle INET é invisível em um formulário , como o controle Timer , e, toda sua funcionalidade esta implementada através de seus métodos. Ele suporta transferência de arquivos no modo sincrono como no assincrono. Isto permite que o programa espere até que os dados sejam transferidos ou que voce monitore o progresso da transferência enquanto realiza outras tarefas.

Propriedades , Metódos e eventos.

Propriedades

O controle INET possui 14 propriedades , descritas a seguir.

Propriedade Tipo de Dados Descrição
AccessType Enum -Define/Retorna um valor que determina se o controle irá acessar a Internet diretamente(icDirect (1)) ou vai um servidor Proxy.(icNamedProxy (2)). Podemos usar a configuração padrão. (icUseDefault (0))
Document String -Define/Retornao arquivo ou documento a ser usado com o método Execute.
hInternet Long -Retorna o identificador Internet da API em WININET.DLL.
Password String -Define/Retorna a senha para o requisição de logon para sistemas remotos.
Protocol Enum -Define/Retorna o protocolo ( FTP, HTTP, HTTPS) a ser usado com o método Execute.
Proxy String -Define/Retorna o nome do servidor Proxy usado para acessar a Internet.
RemoteHost String -Define/Retorna o endereço para o sistema remoto o qual o controle envia ou recebe informação.
RemotePort Integer -Define/Retorna o número da porta de um sistema remoto ao qual o controle se conecta.
RequestTimeout Long -Define/Retorna quanto (in seconds) esperar antes que a requisição venha a expirar.
ResponseCode Long -Retorna um codigo de erro da conexão remota.
ResponseInfo String -Retorna uma mensagem de erro da conexão remota.
StillExecuting Boolean -Retorna um valor que indica se o controle esta ocupado ou não executando uma operação.
URL String -Define/Retorna uma URL a ser usada com os métodos Execute e OpenURL.
UserName String -Define/Retorna o nome do usuário para uma requisição de Logon em um sistema remoto.

controle INET possui as seguintes propriedades: Index, Name , Object, Parent e Tag. São as propriedades padrão e são usadas como em qualquer controle ActiveX.

As propriedades Username e Password

Ao estabelecer uma conexão com um servidor remoto voce precisa enviar o nome do usuário (username) e a senha (password) . Alguns servidores permitem a conexão com um usuário anônimo (anonymous) , outros não ; neste caso você precisa definir as propriedades UserName e Password antes de estabelecer a conexão.

Ao acessar um servidor FTP anonymous você pode deixar as propriedades UserName e Password vazias, pois, o controle INET irá atribuir valores automaticamente para estas propriedades. Username será definido como "anonymous" e Password será definida como o e-mail do usuário.

Métodos

O controle INET possui 5 métodos, descritos a seguir.

Método Descrição
Cancel Cancela a requisição ou operação atual e encerra qualquer conexão estabelecida. Ex: Objeto.Cancel
Execute Executa uma operação ou requisição em um servidor remoto. Ex: Objeto.Execute url, operation, data, requestheaders.
GetChunk Recupera/Retorna dados de um servidor remoto.
GetHeader Recupera/Retorna o texto do cabeçalho de um arquivo HTTP.
OpenURL Abre e recupera um documento para um URL específica.

O método Execute

O método Execute permite que você envie comandos para um servidor FTP ou HTTP. Por exemplo voce pode enviar o comando DIR para um servidor FTP lhe retornar o contéudo de um diretório via método Execute. A informação retornada será armazeanda no buffer do controle INET e você poderá ler esta informação usando o método GetChunck.

Cada um dos quatros argumentos para o método execute é opcional, sendo que o argumento URL define a URL que será aplicada a operação . Por exemplo, ao utilizar o comando DELETE , a URL deverá conter o nome do servidor FTP e o caminho do arquivo a ser deletado ( ftp://ftp.teste.com/dir/teste.txt).

O argumento Operation é a operação ou comando a ser executado. A seguir temos um lista com as operações válidas . Algumas operações somente funcionam no protocolo FTP outras somente no protocolo HTTP.

Protocolo Operação/Sintaxe Descrição
HTTP GET -Retorna dados da URL informada na propriedade URL.
HTTP HEAD -Envia o argumento requestheaders.
HTTP POST -Posta os dados do argumento data para o servidor.
HTTP PUT -Envia uma página localizaa no argumento data.
FTP CD dir Altera um diretório
FTP CDUP Altera o diretório pai atual.
FTP CLOSE Encerra a conexão atual.
FTP DELETE file Exclui um arquivo.
FTP DIR dir Retorna informações sobre o diretório . Para ler as informações use o método GetChunck.
FTP GET file1 file2 Retorna o arquivo file1 e salva-o localmente em file2.
FTP LS dir Procura o diretorio e retorna informações sobre o seu conteúdo.
FTP MKDIR dir Cria um diretório
FTP PUT file1 file2 Envia o arquivo local file1 e grava-o no sistema remoto como file2.
FTP PWD Retorna o nome do diretorio atual. Use o métodoGetChunck para ler a informação retornada.
FTP QUIT Desconecta o usuário atual.
FTP RECV file1 file2 Retorna o arquivo file1 e salva-o localmente em file2. O mesmo que usar GET.
FTP RENAME file1 file2 Renomeia o arquivo file1 para file2.
FTP RMDIR dir Remove um diretório.
FTP SEND file1 file2 Envia o arquivo local file1 e grava-o no sistema remoto como file2. Idêntico a PUT.
FTP SIZE dir Retorna o tamanho do diretório.

Eventos

O controle INET possui somente 1 evento: StateChanged. O evento StateChanged é acionado sempre que há uma alteração em uma conexão com um sistema remoto. Sua sintaxe é a seguinte:

object_StateChanged(ByVal State As Integer)

O evento StateChanged fornece um valor inteiro ( State/Estado) que indica o estado atual da conexão.Os valores possíveis para os valores desse state/estado são:

Constante VB Valor Controle do estado
icNone 0 Nenhum estado a reportar
icHostResolvingHost 1 Procurando o endereço IP do computador HOST.
icHostResolved 2 Encontrado o endereço IP do computador HOST
VB Constant Value Control State
icConnecting 3 Estabecendo uma conexão com um computador host
icConnected 4 Conexão realizada com sucesso ao computador host.
icRequesting 5 Enviando um requisição ao host
icRequestSent 6 Requisição envida com sucesso ao host
icReceivingResponse 7 Recebendo uma resposta de um host
icResponseReceived 8 Resposta recebida com sucesso de um host
icDisconnecting 9 Desconectando de um host
icDisconnected 10 Sucesso na desconexão do host
icError 11 Um erro ocorreu na comunicação com o host
icResponseCompleted 12 Requisição completada com sucesso e todos os dados foram recbidos do host

Quando um comando ou operação é enviada a um servidor remoto (host) usando o método Execute, o evento SateChanged pode disparar um número de vezes conforme os passos de requisição e envio forem sendo completados.

Usando o controle Internet Transfer Control

1-) Transferindo arquivos com o método OpenURL

Para fazer o download de um arquivo ou documento ( HTTP ou FTP ) usamos o método OpenURL do controle Internet Transfer Control. Para realizar tal operação usamos somente uma linha de código , Exemplo:

a-) rtfHTMLDoc = Inet1.OpenURL("http://www.microsoft.com")

b-) txtFTPArquivo = inet1.OpenURL("ftp://ftp.microsoft.com/teste.txt")

No exemplo a-) estamos abrindo a página em www.microsoft.com e salvando-a em um controle RichTextBox(rtfHTMLDoc) afim de preservar a formatação da mesma em b-) estamos recebendo o arquivo teste.txt em um objeto TextBox ( txtFTPArquivo). Obs: Inet1 é o nosso objeto Internet Transfer Control.

Para receber arquivos ou documentos e salvá-los em um arquivo , podemos atribuir o arquivo a uma variável string ,e , então escrever a string para o arquivo usando os comandos : Open , Write e Close. Para receber arquivos binários podemos usar o seguinte código:

Public Function Download(ArqURL As String, Arqtemp As String) As Boolean

 Dim arquivo() As Byte

 Open Arqtemp For Binary Access Write As #1

 arquivo() = Inet1.OpenURL(ArqURL, icByteArray)
 Put #1, , arquivo()

 Close #1

MsgBox "O arquivo  " & Text2.Text & "  foi recebido com sucesso ! ", vbInformation
Download = True
 
 
 Exit Function

Trata_erro:
MsgBox "Ocorreu um erro durante a transferência ! ", vbCritical
Download = False

End Function

Esta função pode ser usada para fazer o download de qualquer arquivo na internet . Para chamá-la basta passar como parâmetros o nome do endereço ( URL ) e o nome do arquivo, como no exemplo a seguir:

lretorno = Download(Text1.Text, Text2.Text)

Aqui em text1.text e text2.text são informados respectivamente a URL e o nome do arquivo (text1 e text2 são os nomes das caixas de texto). Abaixo temos a figura com o exemplo usado e o controle Inet já inserido na caixa de ferramentas:

Aqui a chamada da função é feita quando o usuário clicar no botão de comando
Formulário com o controle Inet  

Acessando FTP via VB

Vamos mostrar agora como acessar um servidor FTP. Veja alguns comandos que você pode usar:

Private Sub Form Load()
   inet1.URL = "FTP://ftp.site.com"
   inet1.Password = "senha"
   inet1.UserName = "seunome"
   text1.text = inet1.OpenURL
End Sub

Private Sub cmdMuda_Diretorio_Click()
    Inet1.Execute txtURL.text, "CD " & txtRemotePath.text
End Sub

Private Sub cmdExcluir_Click()
  Inet1.Execute txtURL.text, "DELETE " & txtRemotePath.text
End Sub

Private Sub cmdDIR_Click()
   Inet1.Execute txtURL.Text, "DIR FindThis.txt"
End Sub

Neste exemplo você deve inserir o controle Inet (chamado aqui Inet1) no seu formulário , uma caixa de texto e três botões de comando. Cada botão realiza uma ação: Muda o diretório , Exclui um arquivo , lista o conteúdo de um diretório.

E...,  acabou.!!! Então, até o próximo artigo ...;-)

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti