4D v16.3

WEB SEND RAW DATA

Página Inicial

 
4D v16.3
WEB SEND RAW DATA

WEB SEND RAW DATA 


 

WEB SEND RAW DATA ( dados {; *} ) 
Parâmetro Tipo   Descrição
dados  BLOB in Dados HTTP a enviar
Operador in Enviar em pedaços

O comando [#current_title] permite ao servidor web 4D enviar dados HTTP "brutos", os quais podem estar em pedaços.

O parâmetro dados contém as duas partes padrão de uma resposta HTTP, ou seja o cabeçalho e o corpo. Os dados são enviados sem formato prévio pelo servidor. Entretanto, 4D realiza um controle básico sobre o cabeçalho e o corpo da resposta com o fim de garantir  que sejam válidos:

  • Se o cabeçalho estiver incompleto ou não cumpre com as especificações do protocolo HTTP, 4D o modifica como corresponde.
  • Se a petição HTTP estiver incompleta, 4D adiciona a informação faltante. Se por exemplo desejar redirecionar a petição, deve escrever:
   HTTP/1.1 302
   Location: http://...

Se apenas passar:

   Location: http://...

4D vai completar a petição adicionando HTTP/1.1 302.

O parâmetro opcional * permite especificar que a resposta se enviará “picotada”. O corte das respostas pode ser útil quando o servidor enviar uma resposta sem conhecer seu comprimento total (se, por exemplo, a resposta ainda não foi gerada). Todos os navegadores compatíveis HTTP/1.1-aceitam as respostas em pedaços.

Se passar o parâmetro *, o servidor web incluirá automaticamente o campo transfer-encoding: chunked no cabeçalho da resposta, se for necessário (pode manejar manualmente o cabeçalho da resposta, se assim preferir).

O restante da resposta também será formatado para respeitar a sintaxe da opção chunked. As respostas picotadas contém apenas um cabeçalho e um número indefinido de corpos.

Todas as instruções WEB SEND RAW DATA que sigam a execução de WEB SEND RAW DATA(data;*) dentro do mesmo método serão consideradas como parte da resposta (sem importar se contém o parâmetro *). O servidor coloca fim ao envio em blocos quando terminar a execução do método.

Nota: se o cliente web não for compatível o protocolo HTTP/1.1, 4D converterá automaticamente a resposta ao formato compatível HTTP/1.0 (o envio não será em pedaços). Entretanto, neste caso, o resultado pode não corresponder a seus desejos. Portanto se recomenda testar se o navegador web compatível HTTP/1.1 e enviar uma resposta apropriada. Para fazer isso, pode utilizar um método deste tipo:
 C_BOOLEAN($0)
 ARRAY TEXT(arCampos;0)
 ARRAY TEXT(arValores;0)
 WEB GET HTTP HEADER(arCampos;arValores)
 $0:=False
 If(Size of array(arValores)>=3)
    If(Position("HTTP/1.1";arValores{3})>0)
       $0:=True // O navegador é compatível HTTP/1.1; $0 retorna True
    End if
 End if

Combinado com o novo comando WEB GET HTTP BODY e com os outros comandos do tema “Servidor web”, este comando completa o conjunto de ferramentas disponíveis para os desenvolvedores 4D para tratar de maneira completamente personalizada as conexões HTTP entrantes e saintes. Estas ferramentas são apresentadas no diagrama abaixo:

Exemplo  

Este exemplo ilustra o uso da opção chunked com o comando WEB SEND RAW DATA. Os dados (uma sequência de números) são enviadas em 100 pedaços gerados rapidamente em um loop. Lembre que o cabeçalho da resposta não está definido explicitamente: o comando o enviará automaticamente e inserirá o campo transfer-encoding: chunked nele se o parâmetro * for utilizado.

 C_LONGINT($cpt)
 C_BLOB($meu_blob)
 C_TEXT($saída)
 
 For($cpt;1;100)
    $saida:="["+String($cpt)+"]"
    TEXT TO BLOB($saida;$meu_blob;UTF8 text without length)
    WEB SEND RAW DATA($meu_blob;*)
 End for



Ver também 

WEB GET HTTP BODY
WEB GET HTTP HEADER

 
PROPRIEDADES 

Produto: 4D
Tema: Web Server
Número 815

This command can be run in preemptive processes

 
HISTÓRIA 

Criado por: 4D 2004
Renomear: 4D v13

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)