Función WinHttpOpenRequest (winhttp.h)
La función WinHttpOpenRequest crea un identificador de solicitud HTTP.
Sintaxis
WINHTTPAPI HINTERNET WinHttpOpenRequest(
[in] HINTERNET hConnect,
[in] LPCWSTR pwszVerb,
[in] LPCWSTR pwszObjectName,
[in] LPCWSTR pwszVersion,
[in] LPCWSTR pwszReferrer,
[in] LPCWSTR *ppwszAcceptTypes,
[in] DWORD dwFlags
);
Parámetros
[in] hConnect
Identificador de conexión HINTERNET a una sesión HTTP devuelta por WinHttpConnect.
[in] pwszVerb
Puntero a una cadena que contiene el verbo HTTP que se va a usar en la solicitud. Si este parámetro es NULL, la función usa GET como verbo HTTP. Nota Esta cadena debe estar en mayúsculas. Muchos servidores tratan los verbos HTTP con distinción entre mayúsculas y minúsculas y las solicitudes del Grupo de tareas de ingeniería de Internet (IETF) solo escriben estos verbos con caracteres en mayúsculas.
[in] pwszObjectName
Puntero a una cadena que contiene el nombre del recurso de destino del verbo HTTP especificado. Por lo general, se trata de un nombre de archivo, un módulo ejecutable o un especificador de búsqueda.
[in] pwszVersion
Puntero a una cadena que contiene la versión HTTP. Si este parámetro es NULL, la función usa HTTP/1.1.
[in] pwszReferrer
Puntero a una cadena que especifica la dirección URL del documento desde la que se obtuvo la dirección URL de la solicitud pwszObjectName . Si este parámetro se establece en WINHTTP_NO_REFERER, no se especifica ningún documento de referencia.
[in] ppwszAcceptTypes
Puntero a una matriz terminada en null de punteros de cadena que especifica los tipos de medios aceptados por el cliente. Si este parámetro se establece en WINHTTP_DEFAULT_ACCEPT_TYPES, el cliente no acepta ningún tipo. Normalmente, los servidores controlan la falta de tipos aceptados como indicación de que el cliente acepta solo documentos de tipo "text/*"; es decir, solo documentos de texto: no hay imágenes ni otros archivos binarios. Para obtener una lista de tipos de medios válidos, vea Tipos de medios definidos por IANA en http://www.iana.org/assignments/media-types/.
[in] dwFlags
Valor entero largo sin signo que contiene los valores de marca de Internet. Este puede ser uno o varios de los valores siguientes:
Valor devuelto
Devuelve un identificador de solicitud HTTP válido si se ejecuta correctamente o NULL si no es así. Para obtener información de error extendida, llame a GetLastError. Entre los códigos de error devueltos se encuentran los siguientes.
Código de error | Descripción |
---|---|
|
El tipo de identificador proporcionado es incorrecto para esta operación. |
|
Se ha producido un error interno. |
|
La dirección URL no es válida. |
|
La operación se canceló, normalmente porque el identificador en el que estaba funcionando la solicitud se cerró antes de que se completara la operación. |
|
La dirección URL especificó un esquema distinto de "http:" o "https:". |
|
No había suficiente memoria disponible para completar la operación solicitada. (Código de error de Windows) |
Comentarios
El valor devuelto indica éxito o error. Para obtener información de error extendida, llame a GetLastError.
La función WinHttpOpenRequest crea un nuevo identificador de solicitud HTTP y almacena los parámetros especificados en ese identificador. Un identificador de solicitud HTTP contiene una solicitud para enviar a un servidor HTTP y contiene todos los encabezados RFC822/MIME/HTTP que se enviarán como parte de la solicitud.
Si pwszVerb se establece en "HEAD", se omite el encabezado Content-Length.
Si se ha instalado una función de devolución de llamada de estado con WinHttpSetStatusCallback, una notificación de WINHTTP_CALLBACK_STATUS_HANDLE_CREATED indica que WinHttpOpenRequest ha creado un identificador de solicitud.
Una vez que la aplicación que realiza la llamada finaliza con el identificador HINTERNET devuelto por WinHttpOpenRequest, debe cerrarse con la función WinHttpCloseHandle .
Ejemplos
En este ejemplo se muestra cómo obtener un identificador HINTERNET , abrir una sesión HTTP, crear un encabezado de solicitud y enviar ese encabezado al servidor.
BOOL bResults = FALSE;
HINTERNET hSession = NULL,
hConnect = NULL,
hRequest = NULL;
// Use WinHttpOpen to obtain a session handle.
hSession = WinHttpOpen( L"A WinHTTP Example Program/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS, 0);
// Specify an HTTP server.
if (hSession)
hConnect = WinHttpConnect( hSession, L"www.wingtiptoys.com",
INTERNET_DEFAULT_HTTP_PORT, 0);
// Create an HTTP Request handle.
if (hConnect)
hRequest = WinHttpOpenRequest( hConnect, L"PUT",
L"/writetst.txt",
NULL, WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
0);
// Send a Request.
if (hRequest)
bResults = WinHttpSendRequest( hRequest,
WINHTTP_NO_ADDITIONAL_HEADERS,
0, WINHTTP_NO_REQUEST_DATA, 0,
0, 0);
// PLACE ADDITIONAL CODE HERE.
// Report any errors.
if (!bResults)
printf( "Error %d has occurred.\n", GetLastError());
// Close any open handles.
if (hRequest) WinHttpCloseHandle(hRequest);
if (hConnect) WinHttpCloseHandle(hConnect);
if (hSession) WinHttpCloseHandle(hSession);
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows XP, Windows 2000 Professional con SP3 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003, Windows 2000 Server con SP3 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winhttp.h |
Library | Winhttp.lib |
Archivo DLL | Winhttp.dll |
Redistribuible | WinHTTP 5.0 e Internet Explorer 5.01 o posterior en Windows XP y Windows 2000. |