Como enviar um fluxo binário usando o XMLHTTP

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 296772
Sumário
Em alguns casos, é aconselhável enviar um fluxo binário para um servidor. Uma maneira de fazer isso é usar o objeto IXMLHTTPRequest . Este artigo demonstra como recuperar um conjunto de registros ADO de um servidor, modificá-lo e enviá-lo novamente como um fluxo de dados binários.
Mais Informações
Este exemplo usa o objeto ADODB.Stream para armazenar os dados binários devem ser enviados para o servidor. Se uma versão mais recente do MSXML foi instalada no modo lado a lado, para executar o código de exemplo com essa versão específica, você deve usar explicitamente a GUIDs ou ProgIDs para essa versão. Por exemplo, MSXML versão 4 instala apenas no modo lado a lado. Por favor consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft para ver o que alterações de código necessário para executar o código de exemplo com o analisador MSXML 4.0: Q305019 INFO: MSXML 4.0 específicos GUIDs e ProgIds.

Por exemplo, em que o código a seguir, você pode criar objetos com MSXML 4.0 com as instruções a seguir:
  • var xmlhttp = novo ActiveXObject("Msxml2.XMLHTTP.4.0");
  • xmlDoc = novo ActiveXObject("Msxml2.DOMDocument.4.0");
  • var xmlhttp = novo ActiveXObject("Msxml2.XMLHTTP.4.0");
Para usar o XMLHTTP para enviar um fluxo binário para um servidor, execute essas etapas:
  1. Cole o código a seguir em um arquivo na pasta da Web padrão e nomeie o arquivo Receiver.asp.
    <%dim Connectiondim rsConnection = "Provider=SQLOLEDB.1;Data Source=servername;User Id=username;Password=password;Initial Catalog=Northwind;"sql =  "Select * from Customers"set rs = server.CreateObject("ADODB.Recordset")if Request.QueryString("getRecordset") = "YES" then	rs.ActiveConnection = Connection	rs.CursorLocation = 3 'Client Side	rs.CursorType = 3 'Static Recordset	rs.LockType = 4 'Batch Optimistic	rs.Open sql	rs.Save response, 1 'persist adPersistXML	Response.Endelse	rs.open Request '.BinaryRead(Request.TotalBytes)	rs.activeconnection = Connection 'Reconnect	rs.updatebatch 'Update adAffectAll	rs.close	Response.Write "Recordset Saved" 'Send back response	Response.Endend if%>
  2. Cole o código a seguir em um arquivo no Web da pasta e nomeie o arquivo Sender.asp
    <SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript><!--var rs;var xmldoc; var xmlstream;function SendRS_onclick() {	xmlstream = new ActiveXObject("ADODB.Stream");	xmlstream.Mode = 3; //read write	xmlstream.Open();	xmlstream.Type = 1; // adTypeBinary	rs.Save(xmlstream,0); //adpersistadtg   	var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");   	xmlhttp.Open("POST","http://localhost/Receiver.asp?getRecordset=NO",false);	xmlhttp.setRequestHeader("Content-Length",xmlstream.Size); //set the length of the content   	xmlhttp.send(xmlstream.Read(xmlstream.Size)); //Send the stream   	alert(xmlhttp.responseText);}function getRS_onclick() {	rs = new ActiveXObject("ADODB.Recordset");	xmldoc = new ActiveXObject("Msxml2.DOMDocument");   	var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");   	xmlhttp.Open("Get","http://localhost/Receiver.asp?getRecordset=YES",false);   	xmlhttp.send();   	xmldoc.loadXML(xmlhttp.responseText); //load the returned stream into the dom document   	rs.Open(xmldoc); //load the dom document into the recordset   	alert("Recordset Loaded");}function Update_onclick() {	alert("before: " + rs.Fields(2).Value);	rs.Fields(2).Value = rs.Fields(2).Value + "!";	rs.Update();	alert("after: " + rs.Fields(2).Value);}//--></SCRIPT><INPUT type="button" value="Get Recordset" id=getRS name=getRS LANGUAGE=javascript onclick="return getRS_onclick()"><INPUT type="button" value="Update" id=Update name=Update LANGUAGE=javascript onclick="return Update_onclick()"><INPUT type="button" value="Send Recordset" id=SendRS name=SendRS LANGUAGE=javascript onclick="return SendRS_onclick()">					
  3. Modificar a página Receiver.asp para que a variável de conexão contém um nome do Microsoft SQL Server e uma userid SQL válido e senha.
  4. Inicie o Microsoft Internet Explorer e navegue até http://localhost/sender.asp.
  5. Clique em obter Recordset . Uma caixa de mensagem aparece e informa que o conjunto de registros foi carregado com êxito.
  6. Clique em Atualizar . Uma caixa de mensagem é exibida e mostra o valor antes da atualização. Uma segunda caixa de mensagem aparece e mostra o valor após a atualização.
  7. Clique em Enviar Recordset . Uma caixa de mensagem aparece e informa que o conjunto de registros foi atualizado.

Recomendações e limitações conhecidos

  • Embora isso permita que você usar o mecanismo persist para passar os dados e para trás para o cliente, é recomendável que você use UpdateGrams ou OpenXML com o SQL Server 2000 para passar e enviar dados do conjunto de registros em formato XML.
  • Há limitações em conjuntos de registros moldados. Conjuntos de registros moldados editados não podem ser mantidos no formato XML. Além disso, comandos parametrizados moldados não podem ser mantidos em todos os. Para obter informações adicionais sobre limitações e persistência, consulte a seguinte site da Microsoft Developer Network (MSDN):

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 296772 - Última Revisão: 07/13/2004 18:07:05 - Revisão: 1.3

Microsoft XML Parser 2.5, Microsoft XML Parser 2.6, Microsoft XML Parser 3.0, Microsoft XML Parser 3.0 Service Pack 1, Microsoft XML Core Services 4.0

  • kbmt kbhowto KB296772 KbMtpt
Comentários