XML - Usando recursos de XMLHTTP com ASP e VB
Muito tem se falado de Ajax e Atlas neste últimos dias; mas muitos dos recursos que são usados e que se escondem atrás dessas siglas já existiam e eram usadas em páginas dinâmicas em conjunto com as linguagens de scripts e XML.
Você pode usar o objeto ServerXMLHTTP do Microsoft XML (MSXML) para executar uma requisição HTTP (POST,GET e PUT). Estes recursos estão disponíveis na biblioteca MSXML (presente no IE a partir da versão 5).
Se você não possuir estes recursos pode baixá-los na página XML Downloads.
Você já deve saber que muitas das transações internet necessitam de comunicação entre o cliente e o servidor sendo que o request e o response podem estar no formato XML. Neste contexto o ServerXMLHTTP é recomendado para aplicações do lado do servidor e XMLHTTP é recomendado para aplicações clientes. Assim, um computador cliente pode usar um objeto ServerXMLHTTP (MSXML2.ServerXMLHTTP) para enviar uma request HTTP arbitrário, receber o response e efetuar o tratamento usando o modelo do objeto do Documento XML.
Desta forma podemos verificar se uma URL esta ativa , se um arquivo existe no servidor; podemos também efetuar downloads e uploads e ler o conteúdo de páginas, dentre outras tarefas.
Antes de continuar quero alertá-lo de que você vai precisar ter os seguintes recursos:
Internet Explorer (versão superior a 5)
Microsoft XML DOM
MSXML (Microsoft XML Parser)
Outro ponto importante e a configuração do proxy que você deve efetuar para evitar erros de acesso as páginas remotas. Você precisa verificar se possui o aplicativo ProxyCfg na pasta System32 da sua máquina.
Digite a partir da linha de comando o seguinte : ProxyCfg -d (veja o resultado na figura abaixo.)
Com isto você não estará usando qualquer proxy quando tentar efetuar a conexão servidor-servidor.
Se quiser obter mais detalhes sobre o assunto leia o artigo : Need roxy Settings
Os objeto request XMLHTTP/ServerXMLHTTP são uma poderosa fonte de recursos que permite realizar muitas tarefas em páginas dinâmicas e também no VB e VBA.
Embora o objeto seja chamado XML HTTP ele não esta limitado a ser usado somente com XML. Podemos dar um request ou enviar qualquer tipo de documento.
No Internet Explorer você pode criar o objeto usando as seguintes sintaxes:
new
ActiveXObject("Msxml2.XMLHTTP")
new
ActiveXObject("Microsoft.XMLHTTP")
Dependendo da versão da MSXML instalada na sua máquina.
O objeto ServerXMLHTTP fornece métodos e propriedades para acesso seguro HTTP entre diferentes servidores na web. Você pode usá-lo para trocar dados XML entre os servidores.
Enquanto o XMLHTTP é desenhado para aplicações do lado do cliente, o ServerXMLHTTP foi projetado para aplicações no servidor.Você pode usar o objeto para trocar dados entre sua máquina local e um máquina remota quer na forma de dados XML ou stream. Ele pode ser usado com ASP, VB, C++, etc.
Vejamos um exemplo onde iremos verificar se um determinado arquivo existe em um servidor.
Vou criar um arquivo html chamado macoratti.htm com o seguinte conteúdo:
<html> <head> <title>Pagina de resposta - XMLHTTP</title> </head> <body> <p>www.macoratti.net</a></p> <p>Quase tudo para Visual Basic</p> </body> </html> |
A seguir vou enviar o arquivo para o meu servidor na URL : www.macoratti.net
Agora vou criar um arquivo ASP chamado checaURL.asp usando a linguagem de script VBScript
<% resolveTimeout = 300 conectaTimeout = 300 sendTimeout = 300 receiveTimeout = 300 verificaURL = "http://www.macoratti.net/macoratti.htm" Set oHttpRequest = CreateObject("MSXML2.ServerXMLHTTP") with oHttpRequest .SetTimeouts resolveTimeout,conectaTimeout,sendTimeout,receiveTimeout .Open "GET" , verificaURL .Send Select case .Status case 200 'ok Response.write verificaURL & " é uma URL válida." case 404 'Pagina não localizada Response.Write verificaURL & " não foi encontrado." case Else Response.Write " Ocorreu um erro não previsto de HTTP : " & .Status End Select End With Set oHttpRequest = Nothing %> |
O script acima utiliza a livraria ServerXMLHTTP para verificar se o arquivo macoratti.htm existe no endereço www.macoratti.net. Como eu enviei o arquivo ao executar a página , veja abaixo, o resultado será positivo.
Eu coloquei o valor da URL fixa no código por
questão de simplicidade mas você pode incrementar criando uma função com
mais recursos. Se você trocar o valor conforme
abaixo Irá obter uma resposta indicando que o arquivo não foi encontrado. |
Usando o ServerXMLHTTP no Visual Basic
A mesma coisa pode ser feita no Visual Basic. Vamos criar um projeto bem simples que irá acessar URL www.macoratti.net e obter o conteúdo do arquivo macoratti.htm exibindo em uma caixa de texto.
Para isto crie um novo projeto do tipo StandardEXE e no formulário padrão inclua uma caixa de texto(Multiline) e um botão de comando segundo o layout a seguir:
Figura 1.0-O formulário exibindo o conteúdo do arquivo macoratti.htm |
A seguir inclua uma referência no seu projeto a biblioteca Microsot XML.v6.0.
Agora no evento click do botão de comando inclua o seguinte código:
Private Sub Command1_Click() Dim obj As MSXML2.ServerXMLHTTP Set obj = New MSXML2.ServerXMLHTTP obj.open "GET", "http://www.macoratti.net/macoratti.htm" obj.send 'se ocorreu um erro HTTP If obj.Status >= 400 And obj.Status <= 505 Then msgbox "Erro Ocorrido : " & obj.Status & " - " & obj.statusText Else Text1.Text = obj.responseText End If End Sub |
Após criar uma instância do objeto - New MSXML2.ServerXMLHTTP
Estamos enviando um comando GET para obter o conteúdo do arquivo macoratti.htm
Se ocorrer algum erro maior ou igual a 400 e menor ou igual a 505 (erros de cliente e servidor) estaremos exibindo o erro, caso contrário, o conteúdo do arquivo é exibido na caixa de texto.(ver figura 1.0)
Obs: Para visualizar os códigos de erro HTTP clique aqui : HTTP erros
Se você quiser usar e abusar dos recursos do XML sugiro que leia os artigos da seção XML do site em : http://www.macoratti.net/indxuml.htm
Até o próximo artigo XML ...
Referência: http://msdn.microsoft.com/xml/default.aspx
José Carlos Macoratti