AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Comunicación / Funciones HTTP
  • Propiedades específicas de las variables de tipo restRequest
  • Gestionar las redirecciones
  • Cookies HTTP
WINDEV
WindowsLinuxJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac Catalyst
Otros
Procedimientos almacenados
El tipo restResponse permite definir todas las características avanzadas de una respuesta REST. Puede definir y cambiar las características de la solicitud REST utilizando diferentes propiedades WLanguage.
Nota: Para obtener más información sobre la declaración de este tipo de variable y el uso de propiedades WLanguage, consulte Declarar una variable.
Ejemplo
cMaRequete is httpRequest
cMaRequete.URL = "http://www.pcsoft.fr"
cMaReponse is httpResponse = RESTSend(cMaRequete)
IF ErrorOccurred THEN
	Error(ErrorInfo(errFullDetails))
ELSE
	Info(cMaReponse.Content)
END
Propiedades

Propiedades específicas de las variables de tipo restRequest

Las siguientes propiedades pueden utilizarse para manipular una solicitud REST:
Nombre de la propiedadTipo utilizadoEfecto
AuthenticationConstante de tipo IntegerDefine el método de autenticación requerido para acceder a los recursos de un determinado servidor o sitio web:
  • auBasic: El nombre y la contraseña se pasan como texto plano en la solicitud.
  • auDigest: El nombre y la contraseña se codifican en la solicitud utilizando un algoritmo de hash.
  • auNegotiate: El cliente y el servidor intercambian cierta información antes de establecer una conexión. Kerberos es el protocolo de autenticación predeterminado. Si no está disponible, se utiliza el protocolo NTLM.
  • auNTLM: El cliente y el servidor intercambian cierta información antes de establecer una conexión mediante el protocolo NTLM (solo Windows).
Nota: Aunque todavía se utiliza ampliamente, no se recomienda utilizar el protocolo NTLM.
AuthTokenVariable de tipo AuthTokenToken de acceso al servicio web que se utilizará para la autenticación mediante el protocolo OAuth 2.0. Este token de acceso se obtiene con la función AuthIdentify.
El token de acceso se pasa automáticamente a la función access_token en la URL. Si este parámetro debe ser diferente, debe construir la URL http.
WEBDEV - Código Navegador No disponible.
CabeceraAssociative array of stringsConjunto de clave/valor de los encabezados que se enviarán.
Ejemplo de uso de esta propiedad:
cMaRequête is httpRequest

cMaRequête.Header["Authorization"] = ...
	" WSSE profile=""UsernameToken"""
cMaRequête.Header["X-WSSE"] = ...
	"UsernameToken Username=blahblah "
cMaRequête.Header["Cache-Control"] = " no-cache"
Cambios de comportamiento a partir de la versión 29 - Update 3:
  • Antes de la versión 29 - Update 3, no se enviaban encabezados vacíos.
  • A partir de la versión 29 - Update 3, se envían encabezados vacíos. Ejemplo:
    req is httpRequest
    req.Header["Vide"] = ""
    req.Send()
    Ahora, el encabezado "Vacío" se pasa al servidor cuando se envía la solicitud, y su valor es una cadena vacía.
ClientCertificateString o BufferCorresponde a:
  • una cadena de caracteres con una ruta de acceso al archivo .p12 que contiene el certificado que debe adjuntarse a la solicitud. El certificado se cargará automáticamente teniendo en cuenta:
    • el certificado que se encuentra en la biblioteca del archivo ejecutable (si se ha integrado en la aplicación),
    • el certificado que se encuentra en la ubicación especificada del disco (si el certificado no se ha integrado en la biblioteca del archivo ejecutable).
  • un búfer con el certificado (función fLoadBuffer).
Si esta propiedad es una cadena vacía (""), el certificado predeterminado se restablece en "<None>".
ClientCertificatePasswordCharacter string o Secret stringContraseña asociada al certificado de cliente (cadena vacía de forma predeterminada).
Novedad versión 2025
Cadenas secretas: Si utiliza el almacén de cadenas secretas, el tipo de cadena secreta utilizado para este parámetro debe ser "ANSI string - Latin".
Para obtener más información sobre las cadenas secretas y el almacén, consulte Almacén de cadenas secretas.
ConnectionTimeoutIntegerTiempo máximo de espera para la conexión expresado en milisegundos (de forma predeterminada 20 segundos, es decir, 20000 milisegundos). Esta propiedad puede corresponder a:
  • un número entero que representa el número de milisegundos,
  • una variable de tipo Duration,
  • la duración en un formato legible (por ejemplo, '20s' o '20000ms').
Si al final del tiempo de espera establecido no se puede establecer la conexión (la función RESTSend devolverá un error, en la variable de resultado de tipo restResponse).
WEBDEV - Código Navegador No disponible.
ContentBufferMensaje HTTP que se enviará al servidor. Esta propiedad solo se tiene en cuenta si el método de envío (propiedad Method) lo permite.
El mensaje que se envíe debe cumplir el protocolo HTTP utilizado. De forma predeterminada, si se especifica esta propiedad, se utiliza una solicitud POST; en caso contrario, se utiliza el método GET.
ContentTypeCharacter stringTipo de contenido del mensaje HTTP que se enviará al servidor. Esta propiedad solo se tiene en cuenta si el método de envío (propiedad Method) lo permite.
De forma predeterminada, el tipo de mensaje corresponde a "application/x-www-form-urlencoded".
Sin embargo, puede utilizar cualquier valor, por ejemplo "text/xml", "application/javascript", "application/json", "application/xml", "image/jpeg", etc.
Para enviar datos sin procesar, que serán leídos en una sola operación por WEBDEV Application Server, utilice los siguientes tipos:
  • "application/octet-stream".
  • "text/xml".
DestinationCharacter stringRuta completa del archivo de copia de seguridad del resultado de la solicitud HTTP.
WEBDEV - Código Navegador No disponible.
DownloadProgressVariable de tipo httpProgressNotificación del progreso de la recepción de datos.
IgnoreErrorConstante de tipo IntegerEspecifica los errores ignorados. Corresponde a una constante o combinación de constantes:
  • httpIgnoreInvalidCertificate: Se ignora el certificado.
  • httpIgnoreInvalidCertificateName: Se ignora el nombre del sitio especificado en el certificado.
  • httpIgnoreExpiredCertificate: Se ignora la fecha del certificado.
  • httpIgnoreDeprecated: Ignora los errores relacionados con el uso de algoritmos obsoletos (por ejemplo, la firma de certificados SHA-1).
  • httpIgnoreRedirection: Se ignora la redirección a una página.
  • httpIgnoreRedirectToHTTP: Se permite la redirección a un servidor no seguro.
  • httpIgnoreRedirectToHTTPS: Se permite la redirección a un servidor seguro.
  • httpIgnoreUnsafeRenegotiation: Ignora el error que indica que el servidor no admite la renegociación segura (RFC 5746).
  • httpIgnoreRevocation: Se ignora la verificación de la lista de certificados revocados.
AndroidWidget Android Solo se gestionan los siguientes errores: httpIgnoreExpiredCertificate, httpIgnoreInvalidCertificate, httpIgnoreInvalidCertificateName, httpIgnoreRevocation, httpIgnoreRedirection.
WEBDEV - Código Navegador No disponible.
MaxDownloadRateIntegerVelocidad máxima de descarga de datos en kilobytes por segundo. Esta velocidad se indica a título informativo.
0 (valor predeterminado) significa que esta velocidad no está limitada.
WEBDEV - Código Navegador No disponible.
WEBDEV - Código Navegador No disponible.
MaxUploadRateIntegerVelocidad máxima de subida de datos en kilobytes por segundo. Esta velocidad se indica a título informativo.
0 (valor predeterminado) significa que esta velocidad no está limitada.
WEBDEV - Código Navegador No disponible.
MétodoConstante de tipo IntegerMétodo HTTP utilizado:
  • httpCopy: Método COPY (valor 7).
  • httpDelete: Método DELETE (valor 4).
  • httpGet: Método GET (valor 1).
  • httpHead: Método HEAD (valor 5).
  • httpLock: Método LOCK (valor 12) (protocolo WebDAV).
  • httpMkCol: Método MKCOL (valor 10) (protocolo WebDAV).
  • httpMove: Método MOVE (valor 11) (protocolo WebDAV).
  • httpPatch: Método PATCH (valor 6).
  • httpPost: Método POST (valor 2).
  • httpPropFind: Método PROPFIND (valor 8) (protocolo WebDAV).
  • httpPropPatch: Método PROPPATCH (valor 9) (protocolo WebDAV).
  • httpPut: Método PUT (valor 3).
  • httpUnlock: Método UNLOCK (valor 13) (protocolo WebDAV).
De forma predeterminada, si la propiedad Content no está vacía, se utiliza el método httpPost. De lo contrario, se utiliza el método httpGet.
PasswordCharacter string o Secret stringContraseña asociada al nombre de usuario (de forma predeterminada se utiliza una cadena vacía). Permite acceder a una página con una URL protegida. Atención: La contraseña no se cifra cuando se envía por Internet.
Nota: Si se especifican las propiedades UserName y Password, el encabezado "Authorization:Basic" correspondiente se genera automáticamente en el encabezado de la solicitud.
Novedad versión 2025
Cadenas secretas: Si utiliza el almacén de cadenas secretas, el tipo de cadena secreta utilizado para este parámetro debe ser "ANSI o Unicode string".
Para obtener más información sobre las cadenas secretas y el almacén, consulte Almacén de cadenas secretas.
New in SaaS
ProcedureData
ProcedureNombre del procedimiento WLanguage llamado al recibir los datos.
Este procedimiento puede utilizarse para recibir progresivamente una respuesta HTTP, por ejemplo, cuando el servidor devuelve una respuesta en fragmentos o de gran tamaño
Este procedimiento tiene el siguiente formato:
PROCEDURE <Procedure name>(<Chunk> is Buffer)
donde <Chunk> corresponde a los datos recibidos.
Si este procedimiento devuelve False, se cancela la solicitud así como la recepción de los datos.
Ejemplo de procedimiento:
PROCEDURE procDonnées(bufMorceau is Buffer)
Trace("Je traite [%Taille(bufMorceau)%] octets de données")
Trace(UTF8ToString(bufMorceau))
Trace("----------------------")
WEBDEV - Código NavegadorAndroidWidget Android No disponible.
Nota: Esta función solo está disponible a partir de WINDEV Suite SaaS 2025 - Update 3.
Para obtener más información, consulte Utilizar las novedades exclusivas de WINDEV Suite SaaS 2025.
New in SaaS
ProcedureHeader
ProcedureNombre del procedimiento WLanguage al que se llamará solo si la solicitud se realiza correctamente (código de respuesta HTTP entre 200 y 299). Este procedimiento puede utilizarse cuando el servidor devuelve una respuesta en fragmentos o de gran tamaño.
Este procedimiento tiene el siguiente formato:
PROCEDURE <Procedure name>(<Response> is httpResponse)
donde <Response> corresponde a las características avanzadas de la respuesta.
Ejemplo de procedimiento:
PROCEDURE procEntete(cMonEntête is httpResponse)
Trace("ProcédureEntête")
IF 200 <= cMonEntête.StatusCode _AND_ 
	cMonEntête.StatusCode <= 299 THEN
	Trace("OK")
ELSE
	Trace("Erreur")
END
Trace(cMonEntête.RawHeader)
Trace("----------------------")
Nota: Los encabezados de redirección no desencadenan el procedimiento.
WEBDEV - Código NavegadorAndroidWidget Android No disponible.
Nota: Esta función solo está disponible a partir de WINDEV Suite SaaS 2025 - Update 3.
Para obtener más información, consulte Utilizar las novedades exclusivas de WINDEV Suite SaaS 2025.
ProcedureTraceProcedureNombre del procedimiento WLanguage utilizado para identificar los datos y los encabezados que se han enviado y recibido. Este procedimiento tiene el siguiente formato:
PROCEDURE <Procedure name>(<InfoType> is int,
<Data> is Buffer)
donde:
  • <InfoType> es una constante de tipo Integer que corresponde al tipo de datos:
    • httpTraceDataSent: Datos enviados.
    • httpTraceDataReceived: Datos recibidos..
    • httpTraceHeaderSent: Encabezado enviado.
    • httpTraceHeaderReceived: Encabezado recibido.
    • httpTraceInfo: Información detallada sobre la ejecución de la solicitud (error cURL/OpenSSL de bajo nivel, etapa en curso, advertencias, etc.).
  • <Data> es un búfer que contiene la información.
Ejemplo de procedimiento:
PROCEDURE ProcTrace(nTypeInfo is int, ...
		bufByData is Buffer)
	SWITCH nTypeInfo
		CASE httpTraceHeaderSent:
			Trace("Entête : ", ...
				UTF8ToString(bufByData))
		CASE httpTraceDataSent:
			Trace("Données : ", ...
					bufByData)
		CASE httpTraceHeaderReceived:
			Trace("Entête reçu : ", ...
				UTF8ToString(bufByData))
		CASE httpTraceDataReceived:
			Trace("Données reçues : ", ...
					bufByData)
	END
WEBDEV - Código Navegador No disponible.
WEBDEV - Código Navegador ResponseRawContent
BooleanIndica si la propiedad Content corresponde al contenido en bruto:
  • True: La propiedad Content corresponde a un búfer. No se realizan cambios.
  • False (predeterminado): El contenido es modificado por el navegador. En particular, el texto UTF-8 se descodifica automáticamente. La propiedad Content devuelve el resultado en forma de cadena.
SelectedCipherCharacter stringNombre del cifrado seleccionado para la solicitud segura.
Esta propiedad está disponible en modo de solo lectura.
SelectedSSLVersionConstante de tipo IntegerVersión del protocolo SSL elegida para una solicitud segura:
  • ProtocolDefault: Protocolo predeterminado (TLS 1.2).
  • ProtocolTLS1: Protocolo TLS1.
  • ProtocolTLS1_1: Protocolo TLS1.1.
  • ProtocolTLS1_2: Protocolo TLS1.2.
  • ProtocolTLS1_3: Protocolo TLS1.3.
WEBDEV - Código Navegador No disponible.
Esta propiedad está disponible en modo de solo lectura.
TimeoutIntegerTiempo máximo de respuesta (en milisegundos). Esta propiedad puede corresponder a:
  • un número entero que representa el número de milisegundos,
  • una variable de tipo Duration,
  • la duración en un formato legible (por ejemplo, '1s' o '10ms').
De forma predeterminada, esta propiedad se establece en 20 segundos.
Nota: El tiempo de espera definido con la función HTTPTimeOut no influye en esta propiedad.
WEBDEV - Código Navegador No disponible.
UploadProgressVariable de tipo httpProgressNotificación del estado de progreso al cargar datos POST.
URLCharacter stringDirección del servidor al que se enviará la solicitud (dirección URL).
Esta URL puede contener:
  • el número de puerto para conectarse al servidor.
    De forma predeterminada, los servidores HTTP que alojan páginas web utilizan el puerto 80, mientras que los servidores HTTPS utilizan el puerto 443. Para especificar un número de puerto, use el siguiente formato: "<URL del servidor>:<Número de puerto>". Por ejemplo: "http://www.windev.es:80".
  • parámetros adicionales. Estos parámetros pueden utilizarse para realizar una búsqueda o rellenar un formulario. Por ejemplo, para buscar "windev" en "http://www.google.com", la URL sería "http://www.google.com/search?q=windev".
Observaciones:
  • Para especificar tanto el número de puerto como los parámetros adicionales, utilice el formato "<URL del servidor>:<Número de puerto>/<Parámetros adicionales>".
  • Para realizar una transacción segura, la URL debe comenzar por "https://". En este caso, las solicitudes siempre se gestionan a través de Internet Explorer (para más información, consulte HTTPConfigure).
UserCharacter stringNombre utilizado para acceder a una página con una URL protegida (cadena vacía de forma predeterminada). Este nombre identifica al usuario.
Nota: Si se especifican las propiedades User y Password, el encabezado "Authorization:Basic" correspondiente se genera automáticamente en el encabezado de la solicitud.
UserAgentCharacter stringIdentifica el cliente. De forma predeterminada, este valor corresponde al nombre de la aplicación.
El contenido de la respuesta depende del agente de usuario (por ejemplo, una solicitud procedente de una PalmPilot requiere páginas diferentes que una solicitud enviada desde un navegador). Para obtener más información, consulte la documentación sobre el agente de usuario.
WEBDEV - Código Navegador No disponible.
VersionHTTPConstante de tipo IntegerVersión HTTP utilizada por el servidor:
  • httpVersion2: HTTP 2.0. Si el servidor no admite esta versión, se utiliza una versión anterior.
  • httpVersion2Only: Fuerza HTTP 2.0. Si el servidor no admite esta versión, aparece un error fatal.
  • httpVersion1_1: HTTP 1.1.
  • httpVersion1_0: HTTP 1.0.
  • httpVersionDefault: HTTP 1.0.
VersionSSLConstante de tipo IntegerVersión mínima y máxima admitida para el protocolo SSL.
Para establecer las versiones mínima y máxima de TLS entre 1.1 y 1.3, simplemente especifique las constantes ProtocolTLS1_1 + ProtocolTLS1_3
Se pueden utilizar las siguientes constantes:
  • ProtocolDefault: Protocolo predeterminado. Versión máxima admitida (o una versión inferior si el servidor no admite este protocolo).
  • ProtocolTLS1: Protocolo TLS1.
  • ProtocolTLS1_1: Protocolo TLS1.1.
  • ProtocolTLS1_2: Protocolo TLS1.2.
  • ProtocolTLS1_3: Protocolo TLS1.3.
WEBDEV - Código Navegador No disponible.
Observaciones

Gestionar las redirecciones

Las redirecciones se admiten de forma predeterminada. Para ignorar las redirecciones, utilice la constante httpIgnoreRedirection en la propiedad IgnoreError.
WINDEVWEBDEV - Código ServidorAndroidWidget Android iPhone/iPadAjax

Cookies HTTP

Las cookies recibidas en respuesta a una llamada a la función RESTSend se almacenan a la espera de una llamada posterior a la función RESTSend en el mismo dominio. En este caso, la variable de tipo restRequest se actualiza.
Para obtener más información, consulte HTTPCookieManage.
Versión mínima requerida
  • Versión 20
Esta página también está disponible para…
Comentarios
Video httpput
PROPAGANDA AULA 2025 RESTREQUEST
https://youtu.be/cJZm-WrAPgM
AULA COMPLETA 2025 RESREQUEST
https://youtu.be/d3zULOtHQjs
https://windevdesenvolvimento.blogspot.com/2019/02/dicas-2025-windev-mobile-webservice-021_23.html
// BTN_ALTERA_httpPut
solicitacao_http is restRequest
URL is string="http://nots-amarildo/empresa/{nEmpresaId}"
URL = Replace(URL,"{nEmpresaId}","2")
solicitacao_http..URL=URL
solicitacao_http..ContentType="application/json"
solicitacao_http..Method=httpPut
solicitacao_http..Content=[
{
"razao_social"
:
"ALTERADO1205"
}
]
resposta_http is restResponse = RESTSend(solicitacao_http)
EDT_RETORNO=resposta_http..Content
amarildo
23 02 2019
Video RestREquest


https://youtu.be/G7oY3hd7Jo0

https://windevdesenvolvimento.blogspot.com/2019/02/dicas-2023-windev-mobile-webservice-019.html

solicitacao_http is restRequest
sUrl is string="http://localhost/empresa/{nEmpresaid}"
sUrl=Replace(sUrl,"{nEmpresaid}","2")
solicitacao_http..URL=sUrl
solicitacao_http..Method=httpGet
resposta_http is restResponse = RESTSend(solicitacao_http)
IF ErrorOccurred THEN
Error(ErrorInfo(errFullDetails))
ELSE
EDT_RETORNO=resposta_http..Content
END

amarildo
22 02 2019
Video Restquest
https://youtu.be/VvMa-5kUZkQ

https://windevdesenvolvimento.blogspot.com/2019/02/dicas-2022-windev-mobile-webservice-018.html

solicitacao_http is restRequest
solicitacao_http..URL="http://nots-amarildo/empresa"
solicitacao_http..Method=httpGet
resposta_http is restResponse = RESTSend(solicitacao_http)
IF ErrorOccurred THEN
Error(ErrorInfo(errFullDetails))
ELSE
EDT_RETORNO=resposta_http..Content
END
amarildo
20 02 2019

Última modificación: 18/06/2025

Señalar un error o enviar una sugerencia | Ayuda local