4 - Creación de la petición

[editar]
Tutorial creado por Juan Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
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).
[editar]

1 opinión

esta chido

esta de poca aunke no le entendi jajajajaja

Tutoriales relacionados con 'Los rincones del API Win32: Más sobre WinInet y HTTP'

El protocolo FTP desde el API WinInet. Con este curso aprenderás a hacer un pequeño... Más »

Autor y licencia de 'Los rincones del API Win32: Más sobre WinInet y HTTP'


Tutorial de Juan Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
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.