Inicio / Wikis / Tutoriales / Los rincones del API Win32: Más sobre WinInet y HTTP - Creación de la petición

Los rincones del API Win32: Más sobre WinInet y HTTP - Creación de la petición

Tutorial creado por
27 de Agosto de 2005
Programación estructurada
Una vez que contamos con un descriptor de conexión a un servidor, obtenido con la función InternetConnect, podemos empezar a enviar distintas peticiones. Para ello, lo primero que debemos hacer es crear la petición, a través de la función HttpOpenRequest.

Esta función nos permite crear una petición HTTP, sin tener que indicar todos los datos requeridos por el protocolo, aunque sí que debemos tener una noción del protocolo.

La función tiene la siguiente sintaxis:

HINTERNET HttpOpenRequest(
HINTERNET hConexión,
LPCTSTR lpszOperación,
LPCTSTR lpszObjeto,
LPCTSTR lpszVersión,
LPCTSTR lpszReferencia,
LPCTSTR* lpszTiposAceptados,
DWORD dwOpciones,
DWORD_PTR dwContexto
);

  • hConexión: el descriptor de conexión que hemos obtenido a través de la función InternetConnect.
  • lpszOperación: un puntero a cadena que nos indica el tipo de petición HTTP que estamos creando. La operación es el valor que se pasa en primer lugar en el protocolo, e informa al servidor de la acción que estamos requiriendo.
    En la sección "Introducción al protocolo HTTP" del anterior artículo, ya explicamos los tipos de petición disponibles en cada una de las versiones del protocolo. Si se pasa el valor NULL, se utilizará la operación GET.
  • lpszObjeto: es el segundo valor que se pasa en la primera línea de la petición HTTP. Representa el objeto sobre el que actúa la operación indicada. Para operaciones GET indica el archivo a descargar, para operaciones HEAD indica el archivo del cual se obtendrá la cabecera, etc.
  • lpszVersion: un puntero a cadena que indica la versión del protocolo que estamos utilizando. Este valor es el que se pasa en tercer lugar en la primera línea de la petición. La cadena debe contener un valor "HTTP/x.y" donde "x.y" es la versión a utilizar. Si se pasa el valor NULL, se utilizará la versión 1.1.
  • lpszReferencia: un puntero a una cadena que contiene una dirección URL. Esta dirección debe ser la del recurso que hace referencia al cual estamos accediendo, es decir, el recurso que nos ha permitido llegar a este punto. Por ejemplo, si navegamos, a través de un hiperenlace, desde la página "index.htm" a la página "otra.htm", la referencia de la segunda petición será la URL de "index.htm".
    Este dato sirve para que el servidor optimice sus operaciones, creando listas de navegación, direcciones de caché, etc. Este valor es opcional, y sólo tendrá sentido si estamos navegando de una URL a otra. En caso de querer ignorar este parámetro, nos bastará con pasar el valor NULL.
  • lpszTiposAceptados: debe pasarse un array de punteros a cadena en el que se enumeran los tipos MIME que acepta el cliente. Se puede pasar el valor NULL para indicar que no se acepta ningún tipo, aunque, normalmente, esto se suele interpretar como que sólo se aceptan documentos de texto (el tipo MIME "text/*"). En la URL http://www.freesoft.org/CIE/RFC/1700/19.htm aparece una lista con todos los tipos de datos MIME existentes.
  • dwOpciones: se puede combinar cualquiera de los siguientes valores. Todos ellos (excepto uno), tienen el mismo significado que explicamos para la función InternetOpenUrl.
    • INTERNET_FLAG_CACHE_IF_NET_FAIL: en caso de que la conexión remota falle, se retorna el recurso del caché en vez de su ubicación original.
    • INTERNET_FLAG_HYPERLINK: ver InternetOpenUrl.
    • INTERNET_FLAG_NO_AUTO_REDIRECT: ver InternetOpenUrl.
    • INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP: ver InternetOpenUrl.
    • INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS: ver InternetOpenUrl.
    • INTERNET_FLAG_NEED_FILE: ver InternetOpenUrl.
    • INTERNET_FLAG_NO_CACHE_WRITE: ver InternetOpenUrl. Si hemos utilizado una operación distinta a GET o POST, este valor será utilizado automaticamente.
    • INTERNET_FLAG_NO_COOKIES: ver InternetOpenUrl.
    • INTERNET_FLAG_NO_UI: ver InternetOpenUrl.
    • INTERNET_FLAG_PRAGMA_NOCACHE: ver InternetOpenUrl.
    • INTERNET_FLAG_RELOAD: ver InternetOpenUrl. Si hemos utilizado una operación distinta a GET o POST, este valor será utilizado automaticamente.
    • INTERNET_FLAG_RESYNCHRONIZE: ver InternetOpenUrl.
    • INTERNET_FLAG_SECURE: ver InternetOpenUrl.


  • dwContexto: tienen el mismo significado que el explicado en InternetOpenUrl.

La función retornará un descriptor de petición o bien NULL si ha ocurrido algún error (llamar a GetLastError para más detalles).
Valora este capítulo:
Autor y licencia de 'Los rincones del API Win32: Más sobre WinInet y HTTP - Creación de la petición'
Juan Manuel Extraído de: http://www.lawebdejm.com

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'Los rincones del API Win32: Más sobre WinInet y HTTP - Creación de la petición' (0)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Los rincones del API Win32: Más sobre WinInet y HTTP - Creación de la petición'

Entramos en temas interesantes: el acceso a recursos remotos a través del protocolo de aplicación... Más »
El protocolo FTP desde el API WinInet. Con este curso aprenderás a hacer un pequeño... Más »
Comienzo con un nuevo tema dentro dentro de la serie Los rincones del API Win32.... Más »
Damos una visión detallada de una de las características más interesantes de esta tecnología de... Más »
Estudio sobre la doctrina católica.
¿Estás seguro de que deseas eliminar este capítulo?