Função HttpOpenRequestA (wininet.h)

Cria um identificador de solicitação HTTP.

Sintaxe

HINTERNET HttpOpenRequestA(
  [in] HINTERNET hConnect,
  [in] LPCSTR    lpszVerb,
  [in] LPCSTR    lpszObjectName,
  [in] LPCSTR    lpszVersion,
  [in] LPCSTR    lpszReferrer,
  [in] LPCSTR    *lplpszAcceptTypes,
  [in] DWORD     dwFlags,
  [in] DWORD_PTR dwContext
);

Parâmetros

[in] hConnect

Um identificador para uma sessão HTTP retornada por InternetConnect.

[in] lpszVerb

Um ponteiro para uma cadeia de caracteres terminada em nulo que contém o verbo HTTP a ser usado na solicitação. Se esse parâmetro for NULL, a função usará GET como o verbo HTTP.

[in] lpszObjectName

Um ponteiro para uma cadeia de caracteres terminada em nulo que contém o nome do objeto de destino do verbo HTTP especificado. Geralmente, esse é um nome de arquivo, um módulo executável ou um especificador de pesquisa.

[in] lpszVersion

Um ponteiro para uma cadeia de caracteres terminada em nulo que contém a versão HTTP a ser usada na solicitação. As configurações no Explorer da Internet substituirão o valor especificado nesse parâmetro.

Se esse parâmetro for NULL, a função usará uma versão HTTP de 1.1 ou 1.0, dependendo do valor das configurações de Explorer da Internet.

Valor Significado
HTTP/1.0
HTTP versão 1.0
HTTP/1.1
HTTP versão 1.1

[in] lpszReferrer

Um ponteiro para uma cadeia de caracteres terminada em nulo que especifica a URL do documento do qual a URL na solicitação (lpszObjectName) foi obtida. Se esse parâmetro for NULL, nenhum referenciador será especificado.

[in] lplpszAcceptTypes

Um ponteiro para uma matriz terminada em nulo de cadeias de caracteres que indica os tipos de mídia aceitos pelo cliente. Veja um exemplo.

PCTSTR rgpszAcceptTypes[] = {_T("text/*"), NULL};

Falha ao terminar corretamente a matriz com um ponteiro NULL causará uma falha.

Se esse parâmetro for NULL, nenhum tipo será aceito pelo cliente. Os servidores geralmente interpretam a falta de tipos de aceitação para indicar que o cliente aceita apenas documentos do tipo "text/*" (ou seja, somente documentos de texto— sem imagens ou outros arquivos binários).

[in] dwFlags

Opções da Internet. Esse parâmetro pode ser qualquer um dos valores a seguir.

Valor Significado
INTERNET_FLAG_CACHE_IF_NET_FAIL
Retorna o recurso do cache se a solicitação de rede para o recurso falhar devido a um ERROR_INTERNET_CONNECTION_RESET (a conexão com o servidor foi redefinida) ou ERROR_INTERNET_CANNOT_CONNECT (falha na tentativa de conexão com o servidor).
INTERNET_FLAG_HYPERLINK
Força um recarregamento se não houver tempo expirado e nenhum tempo LastModified retornado do servidor ao determinar se o item deve ser recarregado da rede.
INTERNET_FLAG_IGNORE_CERT_CN_INVALID
Desabilita a verificação de certificados baseados em SSL/PCT que são retornados do servidor em relação ao nome do host fornecido na solicitação. As funções WinINet usam uma marcar simples em relação a certificados comparando nomes de host correspondentes e regras de curinga simples.
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
Desabilita a verificação de certificados baseados em SSL/PCT para datas de validade adequadas.
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
Desabilita a detecção desse tipo especial de redirecionamento. Quando esse sinalizador é usado, as funções WinINet permitem redirecionamentos de HTTPS para URLs HTTP de forma transparente.
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
Desabilita a detecção desse tipo especial de redirecionamento. Quando esse sinalizador é usado, as funções WinINet permitem redirecionamentos de HTTP para URLs HTTPS.
INTERNET_FLAG_KEEP_CONNECTION
Usa semântica keep alive, se disponível, para a conexão. Esse sinalizador é necessário para o MSN (Microsoft Network), o NTLM (NT LAN Manager) e outros tipos de autenticação.
INTERNET_FLAG_NEED_FILE
Faz com que um arquivo temporário seja criado se o arquivo não puder ser armazenado em cache.
INTERNET_FLAG_NO_AUTH
Não tenta a autenticação automaticamente.
INTERNET_FLAG_NO_AUTO_REDIRECT
Não manipula automaticamente o redirecionamento em HttpSendRequest.
INTERNET_FLAG_NO_CACHE_WRITE
Não adiciona a entidade retornada ao cache.
INTERNET_FLAG_NO_COOKIES
Não adiciona automaticamente cabeçalhos de cookie a solicitações e não adiciona automaticamente cookies retornados ao banco de dados de cookie.
INTERNET_FLAG_NO_UI
Desabilita a caixa de diálogo de cookie.
INTERNET_FLAG_PRAGMA_NOCACHE
Força a solicitação a ser resolvida pelo servidor de origem, mesmo que exista uma cópia armazenada em cache no proxy.
INTERNET_FLAG_RELOAD
Força um download do arquivo, objeto ou listagem de diretório solicitado do servidor de origem, não do cache.
INTERNET_FLAG_RESYNCHRONIZE
Recarrega recursos HTTP se o recurso tiver sido modificado desde a última vez em que foi baixado. Todos os recursos de FTP são recarregados.

Windows XP e Windows Server 2003 R2 e versões anteriores: Os recursos gopher também são recarregados.

INTERNET_FLAG_SECURE
Usa semântica de transação segura. Isso se traduz no uso da SSL/PCT (Secure Sockets Layer/Private Communications Technology) e só é significativo em solicitações HTTP.

[in] dwContext

Um ponteiro para uma variável que contém o valor definido pelo aplicativo que associa essa operação a todos os dados do aplicativo.

Valor retornado

Retorna um identificador de solicitação HTTP se tiver êxito ou NULL caso contrário. Para recuperar informações de erro estendidas, chame GetLastError.

Comentários

A função HttpOpenRequest cria um novo identificador de solicitação HTTP e armazena os parâmetros especificados nesse identificador. Um identificador de solicitação HTTP contém uma solicitação a ser enviada a um servidor HTTP e contém todos os cabeçalhos RFC822/MIME/HTTP a serem enviados como parte da solicitação.

Se um verbo diferente de "GET" ou "POST" for especificado, HttpOpenRequest definirá automaticamente INTERNET_FLAG_NO_CACHE_WRITE e INTERNET_FLAG_RELOAD para a solicitação.

Com a Internet da Microsoft Explorer 5 e posterior, se lpszVerb estiver definido como "HEAD", o cabeçalho Content-Length será ignorado em respostas de servidores HTTP/1.1.

No Windows 7, Windows Server 2008 R2 e posterior, o parâmetro lpszVersion é substituído pelas configurações de Explorer da Internet. O EnableHttp1_1 é um valor do Registro em HKLM\Software\Microsoft\InternetExplorer\AdvacnedOptions\HTTP\GENABLE controlado pelas Opções da Internet definidas na Internet Explorer para o sistema. O valor EnableHttp1_1 é padronizado como 1. A função HttpOpenRequest atualizará qualquer versão HTTP menor que 1.1 para HTTP versão 1.1 se EnableHttp1_1 estiver definido como 1.

Depois que o aplicativo de chamada terminar de usar o identificador HINTERNET retornado por HttpOpenRequest, ele deverá ser fechado usando a função InternetCloseHandle .

Nota Quando uma solicitação é enviada no modo assíncrono (o parâmetro dwFlags de InternetOpen especifica INTERNET_FLAG_ASYNC) e o parâmetro dwContext é zero (INTERNET_NO_CALLBACK), a função de retorno de chamada definida com InternetSetStatusCallback no identificador de solicitação não será invocada, no entanto, a chamada ainda será executada no modo assíncrono.

Como todos os outros aspectos da API WinINet, essa função não pode ser chamada com segurança de dentro de DllMain ou dos construtores e destruidores de objetos globais.

Nota O WinINet não dá suporte a implementações de servidor. Além disso, ele não deve ser usado de um serviço. Para implementações de servidor ou serviços, use Os Serviços HTTP do Microsoft Windows (WinHTTP).
 

Observação

O cabeçalho wininet.h define HttpOpenRequest como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wininet.h
Biblioteca Wininet.lib
DLL Wininet.dll

Confira também

Sessões HTTP

Funções WinINet