Vous êtes sur la page 1sur 2

Transferncia de dados via ASP + XML Um dos grandes feitos do XML a possibilidade de transferir dados de uma forma padronizada,

, estruturada e com um vocabulrio personalizado. Neste artigo, irei demonstrar um processo de transmisso de dados via ASP e XML, utilizando estes recursos. Primeiro passo: selecionando a massa a ser exportada Podemos utilizar o DOM para criar o documento XML. Opcionalmente, podemos criar o documento com response.write, mas esta forma mais sujeita a falhas de programao.
<% set xmlDoc = server.CreateObject("MSXML2.DOMDocument.3.0" ) xmlDoc.async = false set tabela = xmlDoc.createElement("tabela") set oConnection = server.CreateObject("ADODB.Connection" ) oConnection.open ( banco_de_dados ) set oRecordset = oConnection.execute( "select * from tabela" ) do while not oRecordset.eof set registro = xmlDoc.createElement( "registro" ) For n = 0 To oRecordset.Fields.Count - 1 campo = oRecordset.Fields.Item(n).name if oRecordset.Fields.Item(n).type = adLongVarChar or _ oRecordset.Fields.Item(n).type = adLongVarWChar then set memo = xmlDoc.createElement( campo ) memo.text = oRecordset( campo ) registro.appendChild memo else registro.setAttribute campo, oRecordset( campo ) end if Next tabela.appendChild registro loop xmlDoc.appendChild tabela %>

Segundo passo: Enviando dados para o servidor destino H duas solues possveis: 1. Enviar os dados em um campo textarea de um formulrio Nesta, basta incluir este cdigo aps o trecho acima:
<form action="http://destino/recebe.asp" method="post"> <textarea readonly name=xmlDoc><%= xmlDoc.xml %></textarea><input type="submit"> </form>

O incoveniente que o campo no pode exceder o limite de 102.399 caracteres (<http://support.microsoft.com/support/kb/articles/Q273/4/82.ASP?LN=EN>) e que a aplicao que recebe o documento precisa certificar-se que os dados so coerentes. 2. Enviar os dados usando o XMLHTTP
<% Set oXMLHTTP = Server.CreateObject("MSXML2.XMLHTTP") oXMLHTTP.open "POST", "http://destino/recebe.asp", false oXMLHTTP.send(xmlDoc) 'Exibe o retorno do servidor. Como se trata de um documento XML, usamos as tags XMP para exibir o seu contedo, sem que o browser interprete-o. Opcionalmente, poderamos transformar este documento em HTML, ou interagir com a base de dados local, dependendo da resposta. response.write "<xmp>" & oXMLHTTP.responseXML.xml & "</xmp> %>

O incoveniente aqui que a mquina que processa este script precisa estar rodando o Windows 2000 ou Windows NT 4.0, com IE 5.01 ou superior instalado, no sendo suportado pelas verses 9x do Windows. H tambm alguns problemas com web proxies, caso estejam sendo usados. Observados estes requisitos, funciona muito bem e elimina a necessidade de interveno do usurio, sendo a opo recomendada. No prximo passo, iremos adotar a segunda forma, para fins de exemplos. Terceiro passo: Recebendo os dados no servidor e processando-os Uma vez que os dados j foram enviados para o servidor, precisamos apenas receb-los, verificar sua consistncia e efetuar o devido processamento: Recebe.asp

<% Response.ContentType = "text/xml" 'Devemos retornar um documento XML set xmlDoc = Server.CreateObject("MSXML2.DOMDocument.3.0") xmlDoc.load(Request) 'Aqui, carregamos os dados enviados set xmlResposta = Server.CreateObject("MSXML2.DOMDocument.3.0") set resposta = xmlResposta .createElement("resposta") if xmlDoc.parseError <> 0 then resposta.setAttribute "status", "Falha: " & _ xmlDoc.parseError.srcText & _ xmlDoc.parseError.reason & " Linha " & _ xmlDoc.parseError.line & " Col " & _ xmlDoc.parseError.linepos else 'Aqui, faremos o que for necessrio com os dados recebidos: alterao de banco de dados, incluso dos novos registros, etc. resposta.setAttribute "status", "Processado sem problemas" end if xmlResposta.appendChild resposta xmlResposta.save(Response) 'Retornamos o resultado do processamento para quem os enviou %>

Done! Conseguimos exportar alguns dados de um servidor para outro, usando o XML para descrever os dados e o objeto XMLHTTP para envio dos mesmos. Essa soluo se aplica em diversos casos: Processamento de pedidos feitos por sites de terceiros Dois sites trocando informaes em esquemas de parceria Uma aplicao offline transmitindo dados para o servidor central E o que mais sua imaginao permitir! isso a!