Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
WEB SEND RAW DATA
|
WEB SEND RAW DATA ( dados {; *} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
dados | BLOB |
![]() |
Dados HTTP a enviar | |||||
* | Operador |
![]() |
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:
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. 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:
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
Produto: 4D
Tema: Web Server
Número
815
Criado por: 4D 2004
Renomear: 4D v13 (SEND HTTP RAW DATA)
Manual de linguagem 4D ( 4D v20 R7)