Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Opmerking
De Microsoft Foundation Classes-bibliotheek (MFC) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Biedt de functionaliteit voor het aanvragen en lezen van bestanden op een HTTP-server.
Syntaxis
class CHttpFile : public CInternetFile
Leden
Beveiligde constructors
| Naam | Description |
|---|---|
| CHttpFile::CHttpFile | Hiermee maakt u een CHttpFile object. |
Openbare methoden
| Naam | Description |
|---|---|
| CHttpFile::AddRequestHeaders | Voegt headers toe aan de aanvraag die naar een HTTP-server is verzonden. |
| CHttpFile::EndRequest | Hiermee beëindigt u een aanvraag die naar een HTTP-server wordt verzonden met de functie SendRequestEx-lid . |
| CHttpFile::GetFileURL | Hiermee haalt u de URL voor het opgegeven bestand op. |
| CHttpFile::GetObject | Hiermee haalt u het doelobject van het werkwoord op in een aanvraag naar een HTTP-server. |
| CHttpFile::GetVerb | Hiermee haalt u het werkwoord op dat is gebruikt in een aanvraag naar een HTTP-server. |
| CHttpFile::QueryInfo | Retourneert de antwoord- of aanvraagheaders van de HTTP-server. |
| CHttpFile::QueryInfoStatusCode | Haalt de statuscode op die is gekoppeld aan een HTTP-aanvraag en plaatst deze in de opgegeven dwStatusCode parameter. |
| CHttpFile::SendRequest | Hiermee wordt een aanvraag verzonden naar een HTTP-server. |
| CHttpFile::SendRequestEx | Verzendt een aanvraag naar een HTTP-server met behulp van de methoden Write of WriteString van CInternetFile. |
Opmerkingen
Als uw internetsessie gegevens van een HTTP-server leest, moet u een exemplaar van CHttpFile.
Zie het artikel Internetprogrammering met WinInet voor meer informatie over het CHttpFile werken met de andere MFC-internetklassen.
Overnamehiërarchie
CHttpFile
Requirements
Koptekst: afxinet.h
CHttpFile::AddRequestHeaders
Roep deze lidfunctie aan om een of meer HTTP-aanvraagheaders toe te voegen aan de HTTP-aanvraaggreep.
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);
Parameterwaarden
pstrHeaders
Een aanwijzer naar een tekenreeks die de header of headers bevat die aan de aanvraag moeten worden toegevoegd. Elke header moet worden beëindigd door een CR/LF-paar.
dwFlags
Hiermee wijzigt u de semantiek van de nieuwe headers. Dit kan een van de volgende zijn:
HTTP_ADDREQ_FLAG_COALESCE voegt kopteksten van dezelfde naam samen met behulp van de vlag om de eerste koptekst toe te voegen die aan de volgende header is gevonden. 'Accepteren: tekst/*' gevolgd door 'Accepteren: audio/*' resulteert bijvoorbeeld in de vorming van de enkele kopTekst 'Accepteren: tekst/*, audio/*'. Het is aan de aanroepende toepassing om een samenhangend schema te garanderen met betrekking tot gegevens die worden ontvangen door aanvragen die zijn verzonden met samengevoegde of afzonderlijke headers.
HTTP_ADDREQ_FLAG_REPLACE verwijdert en toevoegt om de huidige koptekst te vervangen. De headernaam wordt gebruikt om de huidige koptekst te verwijderen en de volledige waarde wordt gebruikt om de nieuwe koptekst toe te voegen. Als de header-waarde leeg is en de header wordt gevonden, wordt deze verwijderd. Als deze waarde niet leeg is, wordt de header-waarde vervangen.
HTTP_ADDREQ_FLAG_ADD_IF_NEW voegt alleen de koptekst toe als deze nog niet bestaat. Als er een bestaat, wordt er een fout geretourneerd.
HTTP_ADDREQ_FLAG_ADD gebruikt met REPLACE. Voegt de koptekst toe als deze niet bestaat.
dwHeadersLen
De lengte, in tekens, van pstrHeaders. Als dit -1L is, wordt ervan uitgegaan dat pstrHeaders nul-beëindigd zijn en dat de lengte wordt berekend.
Str
Een verwijzing naar een CString-object met de aanvraagheader of -headers die moeten worden toegevoegd.
Retourwaarde
Niet-nul indien geslaagd; anders 0. Als de aanroep mislukt, kan de Win32-functie GetLastError worden aangeroepen om de oorzaak van de fout te bepalen.
Opmerkingen
AddRequestHeaders voegt extra headers met vrije indeling toe aan de HTTP-aanvraaghandler. Het is bedoeld voor gebruik door geavanceerde clients die gedetailleerde controle nodig hebben over de exacte aanvraag die naar de HTTP-server wordt verzonden.
Opmerking
De toepassing kan meerdere headers doorgeven in pstrHeaders of str voor een AddRequestHeaders gesprek met behulp van HTTP_ADDREQ_FLAG_ADD of HTTP_ADDREQ_FLAG_ADD_IF_NEW. Als de toepassing probeert een header te verwijderen of te vervangen met behulp van HTTP_ADDREQ_FLAG_REMOVE of HTTP_ADDREQ_FLAG_REPLACE, kan slechts één header worden opgegeven in lpszHeaders.
CHttpFile::CHttpFile
Deze lidfunctie wordt aangeroepen om een CHttpFile object te maken.
CHttpFile(
HINTERNET hFile,
HINTERNET hSession,
LPCTSTR pstrObject,
LPCTSTR pstrServer,
LPCTSTR pstrVerb,
DWORD_PTR dwContext);
CHttpFile(
HINTERNET hFile,
LPCTSTR pstrVerb,
LPCTSTR pstrObject,
CHttpConnection* pConnection);
Parameterwaarden
hFile
Een ingang naar een internetbestand.
hSession
Een ingang voor een internetsessie.
pstrObject
Een aanwijzer naar een tekenreeks die het CHttpFile object bevat.
pstrServer
Een aanwijzer naar een tekenreeks die de naam van de server bevat.
pstrVerb
Een aanwijzer naar een tekenreeks die de methode bevat die moet worden gebruikt bij het verzenden van de aanvraag. Kan POST, HEAD of GET zijn.
dwContext
De context-id voor het CHttpFile object. Zie Opmerkingen voor meer informatie over deze parameter.
pConnection
Een aanwijzer naar een CHttpConnection-object .
Opmerkingen
U maakt nooit rechtstreeks een CHttpFile object, maar roept in plaats daarvan CInternetSession::OpenURL of CHttpConnection::OpenRequest aan.
De standaardwaarde dwContext wordt door MFC verzonden naar het CHttpFile object van het CInternetSession-object dat het CHttpFile object heeft gemaakt. Wanneer u een CHttpFile object aanroept CInternetSession::OpenURL of CHttpConnection samenstelt, kunt u de standaardinstelling overschrijven om de context-id in te stellen op een waarde van uw keuze. De context-id wordt geretourneerd naar CInternetSession::OnStatusCallback om de status op te geven van het object waarmee het wordt geïdentificeerd. Zie het artikel Internet First Steps: WinInet voor meer informatie over de context-id.
CHttpFile::EndRequest
Roep deze lidfunctie aan om een aanvraag te beëindigen die is verzonden naar een HTTP-server met de functie SendRequestEx-lid .
BOOL EndRequest(
DWORD dwFlags = 0,
LPINTERNET_BUFFERS lpBuffIn = NULL,
DWORD_PTR dwContext = 1);
Parameterwaarden
dwFlags
Vlaggen die de bewerking beschrijven. Zie HttpEndRequest in de Windows SDK voor een lijst met de juiste vlaggen.
lpBuffIn
Wijs een geïnitialiseerde INTERNET_BUFFERS aan die de invoerbuffer beschrijft die voor de bewerking wordt gebruikt.
dwContext
De context-id voor de CHttpFile bewerking. Zie Opmerkingen voor meer informatie over deze parameter.
Retourwaarde
Niet-nul indien geslaagd; anders 0. Als de aanroep mislukt, bepaalt u de oorzaak van de fout door het gegenereerde CInternetException-object te onderzoeken.
Opmerkingen
De standaardwaarde voor dwContext wordt door MFC verzonden naar het CHttpFile object van het CInternetSession-object dat het CHttpFile object heeft gemaakt. Wanneer u CInternetSession::OpenURL of CHttpConnection aanroept om een CHttpFile object te maken, kunt u de standaardinstelling overschrijven om de context-id in te stellen op een waarde van uw keuze. De context-id wordt geretourneerd naar CInternetSession::OnStatusCallback om de status op te geven van het object waarmee het wordt geïdentificeerd. Zie het artikel Internet First Steps: WinInet voor meer informatie over de context-id.
CHttpFile::GetFileURL
Roep deze lidfunctie aan om de naam van het HTTP-bestand op te halen als EEN URL.
virtual CString GetFileURL() const;
Retourwaarde
Een CString-object met een URL die verwijst naar de resource die aan dit bestand is gekoppeld.
Opmerkingen
Gebruik deze lidfunctie pas na een geslaagde aanroep naar SendRequest of op een CHttpFile object dat is gemaakt door OpenURL.
CHttpFile::GetObject
Roep deze lidfunctie aan om de naam op te halen van het object dat aan dit CHttpFileobject is gekoppeld.
CString GetObject() const;
Retourwaarde
Een CString-object met de naam van het object.
Opmerkingen
Gebruik deze lidfunctie pas na een geslaagde aanroep naar SendRequest of op een CHttpFile object dat is gemaakt door OpenURL.
CHttpFile::GetVerb
Roep deze lidfunctie aan om het HTTP-werkwoord (of de methode) op te halen die aan deze CHttpFilefunctie is gekoppeld.
CString GetVerb() const;
Retourwaarde
Een CString-object met de naam van het HTTP-werkwoord (of de methode).
Opmerkingen
Gebruik deze lidfunctie pas na een geslaagde aanroep naar SendRequest of op een CHttpFile object dat is gemaakt door OpenURL.
CHttpFile::QueryInfo
Roep deze lidfunctie aan om antwoord- of aanvraagheaders van een HTTP-aanvraag te retourneren.
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;
Parameterwaarden
dwInfoLevel
Een combinatie van het kenmerk dat moet worden opgevraagd en de volgende vlaggen waarmee het type gevraagde informatie wordt opgegeven:
HTTP_QUERY_CUSTOM zoekt de headernaam en retourneert deze waarde in lpvBuffer op uitvoer. HTTP_QUERY_CUSTOM een verklaring genereert als de header niet wordt gevonden.
HTTP_QUERY_FLAG_REQUEST_HEADERS De toepassing voert doorgaans query's uit op de antwoordheaders, maar een toepassing kan ook query's uitvoeren op aanvraagheaders met behulp van deze vlag.
HTTP_QUERY_FLAG_SYSTEMTIME Voor deze headers waarvan de waarde een datum/tijd-tekenreeks is, zoals 'Laatst gewijzigd-tijd', retourneert deze vlag de headerwaarde als een standaard Win32 SYSTEMTIME-structuur waarvoor de toepassing de gegevens niet hoeft te parseren. Als u deze vlag gebruikt, wilt u mogelijk de
SYSTEMTIMEonderdrukking van de functie gebruiken.HTTP_QUERY_FLAG_NUMBER Voor deze headers waarvan de waarde een getal is, zoals de statuscode, retourneert deze vlag de gegevens als een 32-bits getal.
Zie de sectie Opmerkingen voor een lijst met mogelijke waarden.
lpvBuffer
Een aanwijzer naar de buffer die de informatie ontvangt.
lpdwBufferLength
Bij invoer verwijst dit naar een waarde die de lengte van de gegevensbuffer bevat, in het aantal tekens of bytes. Zie de sectie Opmerkingen voor meer gedetailleerde informatie over deze parameter.
lpdwIndex
Een aanwijzer naar een op nul gebaseerde headerindex. Kan NULL zijn. Gebruik deze vlag om meerdere headers met dezelfde naam op te sommen. Bij invoer geeft lpdwIndex de index van de opgegeven header aan die moet worden geretourneerd. Bij uitvoer geeft lpdwIndex de index van de volgende header aan. Als de volgende index niet kan worden gevonden, wordt ERROR_HTTP_HEADER_NOT_FOUND geretourneerd.
Str
Een verwijzing naar het CString-object dat de geretourneerde informatie ontvangt.
dwIndex
Een indexwaarde. Zie lpdwIndex.
pSysTime
Een aanwijzer naar een Win32 SYSTEMTIME-structuur .
Retourwaarde
Niet-nul indien geslaagd; anders 0. Als de aanroep mislukt, kan de Win32-functie GetLastError worden aangeroepen om de oorzaak van de fout te bepalen.
Opmerkingen
Gebruik deze lidfunctie pas na een geslaagde aanroep naar SendRequest of op een CHttpFile object dat is gemaakt door OpenURL.
U kunt de volgende typen gegevens ophalen uit QueryInfo:
tekenreeksen (standaard)
SYSTEMTIME(voor "Data:" "Expires:" etc, headers)DWORD (voor STATUS_CODE, CONTENT_LENGTH, enzovoort)
Wanneer een tekenreeks naar de buffer wordt geschreven en de lidfunctie slaagt, lpdwBufferLength bevat de lengte van de tekenreeks in tekens min 1 voor het afsluitende NULL-teken.
De mogelijke dwInfoLevel-waarden zijn:
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
Roep deze lidfunctie aan om de statuscode op te halen die is gekoppeld aan een HTTP-aanvraag en plaats deze in de opgegeven dwStatusCode-parameter .
BOOL QueryInfoStatusCode(DWORD& dwStatusCode) const;
Parameterwaarden
dwStatusCode
Een verwijzing naar een statuscode. Statuscodes geven het slagen of mislukken van de aangevraagde gebeurtenis aan. Zie Opmerkingen voor een selectie van statuscodebeschrijvingen.
Retourwaarde
Niet-nul indien geslaagd; anders 0. Als de aanroep mislukt, kan de Win32-functie GetLastError worden aangeroepen om de oorzaak van de fout te bepalen.
Opmerkingen
Gebruik deze lidfunctie pas na een geslaagde aanroep naar SendRequest of op een CHttpFile object dat is gemaakt door OpenURL.
HTTP-statuscodes worden onderverdeeld in groepen die aangeven dat de aanvraag is geslaagd of mislukt. De volgende tabellen bevatten een overzicht van de statuscodegroepen en de meest voorkomende HTTP-statuscodes.
| Groep | Meaning |
|---|---|
| 200-299 | Success |
| 300-399 | Information |
| 400-499 | Aanvraagfout |
| 500-599 | Serverfout |
Algemene HTTP-statuscodes:
| Statuscode | Meaning |
|---|---|
| 200 | URL die zich bevindt, verzending volgt |
| 400 | Onleesbare aanvraag |
| 404 | Aangevraagde URL is niet gevonden |
| 405 | Server biedt geen ondersteuning voor aangevraagde methode |
| 500 | Onbekende serverfout |
| 503 | Servercapaciteit bereikt |
CHttpFile::SendRequest
Roep deze lidfunctie aan om een aanvraag naar een HTTP-server te verzenden.
BOOL SendRequest(
LPCTSTR pstrHeaders = NULL,
DWORD dwHeadersLen = 0,
LPVOID lpOptional = NULL,
DWORD dwOptionalLen = 0);
BOOL SendRequest(
CString& strHeaders,
LPVOID lpOptional = NULL,
DWORD dwOptionalLen = 0);
Parameterwaarden
pstrHeaders
Een aanwijzer naar een tekenreeks met de naam van de headers die moeten worden verzonden.
dwHeadersLen
De lengte van de headers die worden geïdentificeerd door pstrHeaders.
lpOptional
Eventuele optionele gegevens die direct na de aanvraagheaders moeten worden verzonden. Dit wordt meestal gebruikt voor POST- en PUT-bewerkingen. Dit kan NULL zijn als er geen optionele gegevens zijn om te verzenden.
dwOptionalLen
De lengte van lpOptional.
strHeaders
Een tekenreeks met de naam van de headers voor de aanvraag die wordt verzonden.
Retourwaarde
Niet-nul indien geslaagd; anders 0. Als de aanroep mislukt, bepaalt u de oorzaak van de fout door het gegenereerde CInternetException-object te onderzoeken.
CHttpFile::SendRequestEx
Roep deze lidfunctie aan om een aanvraag naar een HTTP-server te verzenden.
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);
Parameterwaarden
dwTotalLen
Het aantal bytes dat moet worden verzonden in de aanvraag.
dwFlags
Vlaggen die de bewerking beschrijven. Zie HttpSendRequestEx in de Windows SDK voor een lijst met de juiste vlaggen.
dwContext
De context-id voor de CHttpFile bewerking. Zie Opmerkingen voor meer informatie over deze parameter.
lpBuffIn
Wijs een geïnitialiseerde INTERNET_BUFFERS aan die de invoerbuffer beschrijft die voor de bewerking wordt gebruikt.
lpBuffOut
Wijs een geïnitialiseerde INTERNET_BUFFERS aan die de uitvoerbuffer beschrijft die voor de bewerking wordt gebruikt.
Retourwaarde
Nonzero als het lukt. Als de aanroep mislukt, bepaalt u de oorzaak van de fout door het gegenereerde CInternetException-object te onderzoeken.
Opmerkingen
Met deze functie kan uw toepassing gegevens verzenden met behulp van de methoden Write en WriteString van CInternetFile. U moet de lengte weten van de gegevens die moeten worden verzonden voordat u een van beide onderdrukkingen van deze functie aanroept. Met de eerste onderdrukking kunt u de lengte opgeven van de gegevens die u wilt verzenden. De tweede onderdrukking accepteert aanwijzingen voor INTERNET_BUFFERS structuren, die kunnen worden gebruikt om de buffer gedetailleerd te beschrijven.
Nadat de inhoud naar het bestand is geschreven, roept u EndRequest aan om de bewerking te beëindigen.
De standaardwaarde voor dwContext wordt door MFC verzonden naar het CHttpFile object van het CInternetSession-object dat het CHttpFile object heeft gemaakt. Wanneer u CInternetSession::OpenURL of CHttpConnection aanroept om een CHttpFile object te maken, kunt u de standaardinstelling overschrijven om de context-id in te stellen op een waarde van uw keuze. De context-id wordt geretourneerd naar CInternetSession::OnStatusCallback om de status op te geven van het object waarmee het wordt geïdentificeerd. Zie het artikel Internet First Steps: WinInet voor meer informatie over de context-id.
Example
Dit codefragment verzendt de inhoud van een tekenreeks naar een DLL met de naam MFCISAPI.DLL op de LOCALHOST-server. Hoewel in dit voorbeeld slechts één aanroep wordt WriteStringgebruikt, is het acceptabel om meerdere aanroepen te gebruiken om gegevens in blokken te verzenden.
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();
Zie ook
CInternetFile-klasse
Hiërarchiegrafiek
CInternetFile-klasse
CGopherFile-klasse
CHttpConnection-klasse