Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Fornece a funcionalidade para solicitar e ler ficheiros num servidor HTTP.
Sintaxe
class CHttpFile : public CInternetFile
Membros
Construtores Protegidos
| Nome | Description |
|---|---|
| CHttpFicheiro::CHttpFile | Cria um CHttpFile objeto. |
Métodos Públicos
| Nome | Description |
|---|---|
| CHttpFicheiro::AddRequestHeaders | Adiciona cabeçalhos ao pedido enviado para um servidor HTTP. |
| CHttpFicheiro::FimPedido | Termina um pedido enviado para um servidor HTTP com a função membro SendRequestEx . |
| CHttpFile::GetFileURL | Obtém o URL do ficheiro especificado. |
| CHttpFile::GetObject | Obtém o objeto alvo do verbo num pedido para um servidor HTTP. |
| CHttpFicheiro::GetVerb | Recebe o verbo que foi usado num pedido para um servidor HTTP. |
| CHttpFicheiro::QueryInfo | Retorna os cabeçalhos de resposta ou pedido do servidor HTTP. |
| CHttpFile::QueryInfoStatusCode | Recupera o código de estado associado a um pedido HTTP e coloca-o no parâmetro fornecido.dwStatusCode |
| CHttpFicheiro::EnviarPedido | Envia um pedido para um servidor HTTP. |
| CHttpFicheiro::SendRequestEx | Envia um pedido para um servidor HTTP usando os métodos Write ou WriteString de CInternetFile. |
Observações
Se a sua sessão de Internet lê dados de um servidor HTTP, deve criar uma instância de CHttpFile.
Para saber mais sobre como CHttpFile funciona com as outras aulas de Internet do MFC, consulte o artigo Programação da Internet com WinInet.
Hierarquia de herança
CHttpFile
Requerimentos
Cabeçalho: afxinet.h
CHttpFicheiro::AddRequestHeaders
Chame esta função membro para adicionar um ou mais cabeçalhos de pedido HTTP ao handle de pedido HTTP.
BOOL AddRequestHeaders(
LPCTSTR pstrHeaders,
DWORD dwFlags = HTTP_ADDREQ_FLAG_ADD_IF_NEW,
int dwHeadersLen = -1);
BOOL AddRequestHeaders(
CString& str,
DWORD dwFlags = HTTP_ADDREQ_FLAG_ADD_IF_NEW);
Parâmetros
PstrHeaders
Um ponteiro para uma string contendo o cabeçalho ou cabeçalhos para anexar ao pedido. Cada cabeçalho deve ser terminado por um par CR/LF.
dwBandeiras
Modifica a semântica dos novos cabeçalhos. Pode ser um dos seguintes:
HTTP_ADDREQ_FLAG_COALESCE Funde cabeçalhos com o mesmo nome, usando a flag para adicionar o primeiro cabeçalho encontrado ao cabeçalho seguinte. Por exemplo, "Aceitar: texto/*" seguido de "Aceitar: áudio/*" resulta na formação do único cabeçalho "Aceitar: texto/*, áudio/*". Cabe à aplicação que chama garantir um esquema coeso relativamente aos dados recebidos por pedidos enviados com cabeçalhos coalescidos ou separados.
HTTP_ADDREQ_FLAG_REPLACE Realiza uma remoção e adição para substituir o cabeçalho atual. O nome do cabeçalho será usado para remover o cabeçalho atual, e o valor total será usado para adicionar o novo cabeçalho. Se o valor do cabeçalho estiver vazio e o cabeçalho for encontrado, é removido. Se não estiver vazio, o valor do cabeçalho é substituído.
HTTP_ADDREQ_FLAG_ADD_IF_NEW Só adiciona o cabeçalho se este ainda não existir. Se existir uma, é devolvido um erro.
HTTP_ADDREQ_FLAG_ADD Usado com SUBSTITUIR. Adiciona o cabeçalho se este não existir.
dwHeadersLen
O comprimento, em caracteres, dos pstrHeaders. Se isto for -1L, então assume-se que os pstrHeaders têm terminação zero e o comprimento é calculado.
STR
Uma referência a um objeto CString contendo o cabeçalho ou cabeçalhos do pedido a adicionar.
Valor de retorno
Não nulo se for bem-sucedido; caso contrário, 0. Se a chamada falhar, pode ser chamada a função Win32 GetLastError para determinar a causa do erro.
Observações
AddRequestHeaders adiciona cabeçalhos adicionais de formato livre ao handler do pedido HTTP. Destina-se a ser utilizado por clientes sofisticados que necessitam de controlo detalhado sobre o pedido exato enviado ao servidor HTTP.
Observação
A aplicação pode passar múltiplos cabeçalhos em pstrHeaders ou str para uma AddRequestHeaders chamada usando HTTP_ADDREQ_FLAG_ADD ou HTTP_ADDREQ_FLAG_ADD_IF_NEW. Se a aplicação tentar remover ou substituir um cabeçalho usando HTTP_ADDREQ_FLAG_REMOVE ou HTTP_ADDREQ_FLAG_REPLACE, apenas um cabeçalho pode ser fornecido nos lpszHeaders.
CHttpFicheiro::CHttpFile
Esta função membro é chamada para construir um CHttpFile objeto.
CHttpFile(
HINTERNET hFile,
HINTERNET hSession,
LPCTSTR pstrObject,
LPCTSTR pstrServer,
LPCTSTR pstrVerb,
DWORD_PTR dwContext);
CHttpFile(
HINTERNET hFile,
LPCTSTR pstrVerb,
LPCTSTR pstrObject,
CHttpConnection* pConnection);
Parâmetros
hFile
Um endereço para um ficheiro da Internet.
hSession
Um nome para uma sessão na Internet.
pstrObject
Um ponteiro para uma cadeia que contém o CHttpFile objeto.
pstrServer
Um apontador para uma string contendo o nome do servidor.
pstrVerb
Um ponteiro para uma string contendo o método a ser usado ao enviar o pedido. Pode ser POST, HEAD ou GET.
dwContext
O identificador de contexto para o CHttpFile objeto. Consulte Observações para mais informações sobre este parâmetro.
pConnection
Um ponteiro para um objeto CHttpConnection .
Observações
Nunca constróis um CHttpFile objeto diretamente; em vez disso, chama CInternetSession::OpenURL ou CHttpConnection::OpenRequest .
O valor predefinido para dwContext é enviado pelo MFC para o CHttpFile objeto a partir do objeto CInternetSession que criou o CHttpFile objeto. Quando chama CInternetSession::OpenURL ou CHttpConnection constrói um CHttpFile objeto, pode sobrepor o padrão para definir o identificador de contexto com um valor à sua escolha. O identificador de contexto é devolvido a CInternetSession::OnStatusCallback para fornecer o estado do objeto com o qual está identificado. Consulte o artigo Internet First Steps: WinInet para mais informações sobre o identificador de contexto.
CHttpFicheiro::FimPedido
Chame esta função membro para terminar um pedido enviado a um servidor HTTP com a função membro SendRequestEx .
BOOL EndRequest(
DWORD dwFlags = 0,
LPINTERNET_BUFFERS lpBuffIn = NULL,
DWORD_PTR dwContext = 1);
Parâmetros
dwBandeiras
Bandeiras a descrever a operação. Para uma lista dos flags apropriados, veja HttpEndRequest no SDK do Windows.
lpBuffIn
Apontador para uma INTERNET_BUFFERS inicializada que descreve o buffer de entrada usado para a operação.
dwContext
O identificador de contexto da CHttpFile operação. Consulte Observações para mais informações sobre este parâmetro.
Valor de retorno
Não nulo se for bem-sucedido; caso contrário, 0. Se a chamada falhar, determine a causa da falha examinando o objeto CInternetException lançado.
Observações
O valor padrão do dwContext é enviado pelo MFC para o CHttpFile objeto a partir do objeto CInternetSession que criou o CHttpFile objeto. Quando chama CInternetSession::OpenURL ou CHttpConnection para construir um CHttpFile objeto, pode sobrepor o padrão para definir o identificador de contexto para um valor à sua escolha. O identificador de contexto é devolvido a CInternetSession::OnStatusCallback para fornecer o estado do objeto com o qual está identificado. Consulte o artigo Internet First Steps: WinInet para mais informações sobre o identificador de contexto.
CHttpFile::GetFileURL
Chame esta função membro para obter o nome do ficheiro HTTP como URL.
virtual CString GetFileURL() const;
Valor de retorno
Um objeto CString contendo uma URL que faz referência ao recurso associado a este ficheiro.
Observações
Use esta função membro apenas após uma chamada bem-sucedida para SendRequest ou num CHttpFile objeto criado com sucesso pelo OpenURL.
CHttpFile::GetObject
Chame esta função membro para obter o nome do objeto associado a este CHttpFile.
CString GetObject() const;
Valor de retorno
Um objeto CString contendo o nome do objeto.
Observações
Use esta função membro apenas após uma chamada bem-sucedida para SendRequest ou num CHttpFile objeto criado com sucesso pelo OpenURL.
CHttpFicheiro::GetVerb
Chame esta função membro para obter o verbo HTTP (ou método) associado a este CHttpFile.
CString GetVerb() const;
Valor de retorno
Um objeto CString contendo o nome do verbo HTTP (ou método).
Observações
Use esta função membro apenas após uma chamada bem-sucedida para SendRequest ou num CHttpFile objeto criado com sucesso pelo OpenURL.
CHttpFicheiro::QueryInfo
Chame esta função membro para devolver cabeçalhos de resposta ou pedido de um pedido HTTP.
BOOL QueryInfo(
DWORD dwInfoLevel,
LPVOID lpvBuffer,
LPDWORD lpdwBufferLength,
LPDWORD lpdwIndex = NULL) const;
BOOL QueryInfo(
DWORD dwInfoLevel,
CString& str,
LPDWORD dwIndex = NULL) const;
BOOL QueryInfo(
DWORD dwInfoLevel,
SYSTEMTIME* pSysTime,
LPDWORD dwIndex = NULL) const;
Parâmetros
dwInfoLevel
Uma combinação do atributo a consultar e das seguintes bandeiras que especificam o tipo de informação solicitada:
HTTP_QUERY_CUSTOM Encontra o nome do cabeçalho e devolve esse valor em lpvBuffer na saída. HTTP_QUERY_CUSTOM lança uma afirmação se o cabeçalho não for encontrado.
HTTP_QUERY_FLAG_REQUEST_HEADERS Normalmente, a aplicação consulta os cabeçalhos de resposta, mas uma aplicação também pode consultar cabeçalhos de pedidos usando este flag.
HTTP_QUERY_FLAG_SYSTEMTIME Para os cabeçalhos cujo valor é uma cadeia de data/hora, como "Last-Modified-Time", esta flag devolve o valor do cabeçalho como uma estrutura padrão Win32 SYSTEMTIME que não exige que a aplicação analise os dados. Se usares este flag, podes querer usar a
SYSTEMTIMEsobreposição da função.HTTP_QUERY_FLAG_NUMBER Para os cabeçalhos cujo valor é um número, como o código de estado, esta bandeira devolve os dados como um número de 32 bits.
Consulte a secção de Observações para uma lista dos valores possíveis.
lpvBuffer
Um apontador para o buffer que recebe a informação.
lpdwBufferLength
Ao inserir, isto aponta para um valor contendo o comprimento do buffer de dados, em número de caracteres ou bytes. Consulte a secção Observações para informações mais detalhadas sobre este parâmetro.
lpdwIndex
Um apontador para um índice de cabeçalho baseado em zero. Pode ser NULL. Use esta bandeira para enumerar múltiplos cabeçalhos com o mesmo nome. Na entrada, lpdwIndex indica o índice do cabeçalho especificado a retornar. Na saída, lpdwIndex indica o índice do próximo cabeçalho. Se o próximo índice não for encontrado, ERROR_HTTP_HEADER_NOT_FOUND é devolvido.
STR
Uma referência ao objeto CString que recebe a informação devolvida.
dwIndex
Um valor de índice. Ver lpdwIndex.
pSysTime
Um apontador para uma estrutura SYSTEMTIME do Win32.
Valor de retorno
Não nulo se for bem-sucedido; caso contrário, 0. Se a chamada falhar, pode ser chamada a função Win32 GetLastError para determinar a causa do erro.
Observações
Use esta função membro apenas após uma chamada bem-sucedida para SendRequest ou num CHttpFile objeto criado com sucesso pelo OpenURL.
Pode obter os seguintes tipos de dados a partir de QueryInfo:
Strings (padrão)
SYSTEMTIME(para "Data:" "Expires:" etc., cabeçalhos)DWORD (para STATUS_CODE, CONTENT_LENGTH, etc.)
Quando uma cadeia é escrita no buffer, e a função membro tem sucesso, lpdwBufferLength contém o comprimento da cadeia em caracteres menos 1 para o carácter NULL que termina.
Os valores possíveis de dwInfoLevel incluem:
HTTP_QUERY_MIME_VERSION
HTTP_QUERY_CONTENT_TYPE
HTTP_QUERY_CONTENT_TRANSFER_ENCODING
HTTP_QUERY_CONTENT_ID
HTTP_QUERY_CONTENT_DESCRIPTION
HTTP_QUERY_CONTENT_LENGTH
HTTP_QUERY_ALLOWED_METHODS
HTTP_QUERY_PUBLIC_METHODS
HTTP_QUERY_DATE
HTTP_QUERY_EXPIRES
HTTP_QUERY_LAST_MODIFIED
HTTP_QUERY_MESSAGE_ID
HTTP_QUERY_URI
HTTP_QUERY_DERIVED_FROM
HTTP_QUERY_LANGUAGE
HTTP_QUERY_COST
HTTP_QUERY_WWW_LINK
HTTP_QUERY_PRAGMA
HTTP_QUERY_VERSION
HTTP_QUERY_STATUS_CODE
HTTP_QUERY_STATUS_TEXT
HTTP_QUERY_RAW_HEADERS
HTTP_QUERY_RAW_HEADERS_CRLF
CHttpFile::QueryInfoStatusCode
Chame esta função membro para obter o código de estado associado a um pedido HTTP e coloque-o no parâmetro dwStatusCode fornecido.
BOOL QueryInfoStatusCode(DWORD& dwStatusCode) const;
Parâmetros
dwStatusCode
Uma referência a um código de estado. Os códigos de estado indicam o sucesso ou fracasso do evento solicitado. Consulte Observações para uma seleção de descrições de códigos de estado.
Valor de retorno
Não nulo se for bem-sucedido; caso contrário, 0. Se a chamada falhar, pode ser chamada a função Win32 GetLastError para determinar a causa do erro.
Observações
Use esta função membro apenas após uma chamada bem-sucedida para SendRequest ou num CHttpFile objeto criado com sucesso pelo OpenURL.
Os códigos de estado HTTP dividem-se em grupos que indicam o sucesso ou fracasso do pedido. As tabelas seguintes descrevem os grupos de códigos de estado e os códigos de estado HTTP mais comuns.
| Grupo | Meaning |
|---|---|
| 200-299 | Sucesso |
| 300-399 | Informação |
| 400-499 | Erro de pedido |
| 500-599 | Erro do servidor |
Códigos de Estado HTTP Comuns:
| Código de estado | Meaning |
|---|---|
| 200 | URL localizada, transmissão segue |
| 400 | Pedido ininteligível |
| 404 | URL solicitado não encontrado |
| 405 | O servidor não suporta o método solicitado |
| 500 | Erro desconhecido do servidor |
| 503 | Capacidade do servidor atingida |
CHttpFicheiro::EnviarPedido
Chame esta função membro para enviar um pedido a um servidor HTTP.
BOOL SendRequest(
LPCTSTR pstrHeaders = NULL,
DWORD dwHeadersLen = 0,
LPVOID lpOptional = NULL,
DWORD dwOptionalLen = 0);
BOOL SendRequest(
CString& strHeaders,
LPVOID lpOptional = NULL,
DWORD dwOptionalLen = 0);
Parâmetros
PstrHeaders
Um apontador para uma string contendo o nome dos cabeçalhos a enviar.
dwHeadersLen
O comprimento dos cabeçalhos identificados por pstrHeaders.
lpOptional
Quaisquer dados opcionais para enviar imediatamente após os cabeçalhos dos pedidos. Isto é geralmente utilizado para operações POST e PUT. Isto pode ser NULL se não houver dados opcionais para enviar.
dwOptionalLen
A duração do lpOptional.
Cabeçalhos strHeaders
Uma string contendo o nome dos cabeçalhos do pedido enviado.
Valor de retorno
Não nulo se for bem-sucedido; caso contrário, 0. Se a chamada falhar, determine a causa da falha examinando o objeto CInternetException lançado.
CHttpFicheiro::SendRequestEx
Chame esta função membro para enviar um pedido a um servidor HTTP.
BOOL SendRequestEx(
DWORD dwTotalLen,
DWORD dwFlags = HSR_INITIATE,
DWORD_PTR dwContext = 1);
BOOL SendRequestEx(
LPINTERNET_BUFFERS lpBuffIn,
LPINTERNET_BUFFERS lpBuffOut,
DWORD dwFlags = HSR_INITIATE,
DWORD_PTR dwContext = 1);
Parâmetros
dwTotalLen
Número de bytes a enviar no pedido.
dwBandeiras
Bandeiras a descrever a operação. Para uma lista de flags apropriados, veja HttpSendRequestEx no SDK do Windows.
dwContext
O identificador de contexto da CHttpFile operação. Consulte Observações para mais informações sobre este parâmetro.
lpBuffIn
Apontador para uma INTERNET_BUFFERS inicializada que descreve o buffer de entrada usado para a operação.
lpBuffOut
Apontador para uma INTERNET_BUFFERS inicializada que descreve o buffer de saída usado para a operação.
Valor de retorno
Não nulo se for bem-sucedido. Se a chamada falhar, determine a causa da falha examinando o objeto CInternetException lançado.
Observações
Esta função permite que a sua aplicação envie dados usando os métodos Write e WriteString de CInternetFile. Deve saber o comprimento dos dados a enviar antes de chamar qualquer um dos overrides desta função. A primeira sobreposição permite-te especificar o comprimento dos dados que gostarias de enviar. A segunda sobreposição aceita ponteiros para INTERNET_BUFFERS estruturas, que podem ser usados para descrever o buffer em grande detalhe.
Depois de o conteúdo ser escrito no ficheiro, chame o EndRequest para terminar a operação.
O valor padrão do dwContext é enviado pelo MFC para o CHttpFile objeto a partir do objeto CInternetSession que criou o CHttpFile objeto. Quando chama CInternetSession::OpenURL ou CHttpConnection para construir um CHttpFile objeto, pode sobrepor o padrão para definir o identificador de contexto para um valor à sua escolha. O identificador de contexto é devolvido a CInternetSession::OnStatusCallback para fornecer o estado do objeto com o qual está identificado. Consulte o artigo Internet First Steps: WinInet para mais informações sobre o identificador de contexto.
Example
Este fragmento de código envia o conteúdo de uma cadeia para uma DLL chamada MFCISAPI.DLL no servidor LOCALHOST. Embora este exemplo use apenas uma chamada para WriteString, é aceitável usar múltiplas chamadas para enviar dados em blocos.
CString strData = _T("Some very long data to be POSTed here!");
pServer = session.GetHttpConnection(_T("localhost"));
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,
_T("/MFCISAPI/MFCISAPI.dll?"));
pFile->SendRequestEx(strData.GetLength());
pFile->WriteString(strData);
pFile->EndRequest();
Consulte também
Classe CInternetFile
Gráfico de Hierarquia
Classe CInternetFile
Classe CGopherFile
Classe CHttpConnection