Megosztás a következőn keresztül:


CHttpFile osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

A HTTP-kiszolgálón található fájlok lekérésére és olvasására használható funkciókat biztosítja.

Szemantika

class CHttpFile : public CInternetFile

Tagok

Védett konstruktorok

Név Description
CHttpFile::CHttpFile Létrehoz egy objektumot CHttpFile .

Nyilvános metódusok

Név Description
CHttpFile::AddRequestHeaders Fejléceket ad hozzá a HTTP-kiszolgálónak küldött kérelemhez.
CHttpFile::EndRequest A SendRequestEx tagfüggvénnyel egy HTTP-kiszolgálónak küldött kérés befejezése.
CHttpFile::GetFileURL Lekéri a megadott fájl URL-címét.
CHttpFile::GetObject Lekéri az ige célobjektumát egy HTTP-kiszolgálóra irányuló kérésben.
CHttpFile::GetVerb Lekéri a HTTP-kiszolgálóra irányuló kérésben használt igét.
CHttpFile::QueryInfo A HTTP-kiszolgáló válasz- vagy kérésfejléceit adja vissza.
CHttpFile::QueryInfoStatusCode Lekéri a HTTP-kéréshez társított állapotkódot, és elhelyezi a megadott dwStatusCode paraméterben.
CHttpFile::SendRequest Kérést küld egy HTTP-kiszolgálónak.
CHttpFile::SendRequestEx Kérést küld egy HTTP-kiszolgálónak a Write vagy WriteString metódusával CInternetFile.

Megjegyzések

Ha az internetes munkamenet adatokat olvas be EGY HTTP-kiszolgálóról, létre kell hoznia egy példányt.CHttpFile

Ha többet szeretne megtudni arról, hogyan CHttpFile működik a többi MFC internetes osztály, olvassa el az Internet Programming with WinInet című cikket.

Öröklési hierarchia

CObject

CFile

CStdioFile

CInternetFile

CHttpFile

Requirements

Fejléc: afxinet.h

CHttpFile::AddRequestHeaders

Hívja meg ezt a tagfüggvényt, hogy adjon hozzá egy vagy több HTTP-kérelemfejlécet a HTTP-kérelem leíróhoz.

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);

Paraméterek

pstrHeaders
A kéréshez fűzendő fejléceket vagy fejléceket tartalmazó sztringre mutató mutató. Minden fejlécet CR/LF párnak kell leállnia.

dwFlags
Módosítja az új fejlécek szemantikáját. A következők egyike lehet:

  • HTTP_ADDREQ_FLAG_COALESCE Azonos nevű fejléceket egyesít a jelölővel, hogy hozzáadja a talált első fejlécet a következő fejléchez. Az "Elfogadás: szöveg/*" és az "Elfogadás: hang/*" kifejezés például az "Elfogadás: szöveg/*, hang/*" fejléc létrehozását eredményezi. A hívó alkalmazás feladata, hogy egységes sémát biztosítson a szenes vagy különálló fejlécekkel küldött kérelmek által fogadott adatok tekintetében.

  • HTTP_ADDREQ_FLAG_REPLACE Eltávolítja és hozzáadja az aktuális fejlécet. Az élőfej neve az aktuális fejléc eltávolítására szolgál, a teljes érték pedig az új fejléc hozzáadására szolgál. Ha a fejléc értéke üres, és a fejléc megtalálható, az el lesz távolítva. Ha nem üres, a fejléc értéke lecserélődik.

  • HTTP_ADDREQ_FLAG_ADD_IF_NEW Csak akkor adja hozzá a fejlécet, ha még nem létezik. Ha létezik ilyen, a program hibát ad vissza.

  • HTTP_ADDREQ_FLAG_ADD CSERE funkcióval használható. Hozzáadja a fejlécet, ha nem létezik.

dwHeadersLen
A pstrHeaders hossza karakterben. Ha ez -1L, akkor a pstrHeaders értéke nullával végződik, és a hossz kiszámítása történik.

Str
Hivatkozás a hozzáadni kívánt kérelemfejlécet vagy fejléceket tartalmazó CString-objektumra .

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0. Ha a hívás sikertelen, a Rendszer meghívhatja a Win32 GetLastError függvényt a hiba okának meghatározásához.

Megjegyzések

AddRequestHeaders további, szabad formátumú fejléceket fűz a HTTP-kérelem leíróhoz. Kifinomult ügyfeleknek szánták, akiknek részletes ellenőrzésre van szükségük a HTTP-kiszolgálónak küldött pontos kérés felett.

Megjegyzés:

Az alkalmazás több fejlécet is átadhat a pstrHeadersben vagy str-ben egy AddRequestHeaders híváshoz HTTP_ADDREQ_FLAG_ADD vagy HTTP_ADDREQ_FLAG_ADD_IF_NEW használatával. Ha az alkalmazás megpróbál eltávolítani vagy lecserélni egy fejlécet HTTP_ADDREQ_FLAG_REMOVE vagy HTTP_ADDREQ_FLAG_REPLACE használatával, csak egy fejléc adható meg az lpszHeadersben.

CHttpFile::CHttpFile

Ez a tagfüggvény egy CHttpFile objektum létrehozásához van meghívva.

CHttpFile(
    HINTERNET hFile,
    HINTERNET hSession,
    LPCTSTR pstrObject,
    LPCTSTR pstrServer,
    LPCTSTR pstrVerb,
    DWORD_PTR dwContext);

CHttpFile(
    HINTERNET hFile,
    LPCTSTR pstrVerb,
    LPCTSTR pstrObject,
    CHttpConnection* pConnection);

Paraméterek

hFile
Egy internetes fájl leírója.

hSession
Egy internetes munkamenet leírója.

pstrObject
Az objektumot tartalmazó CHttpFile sztringre mutató mutató.

pstrServer
A kiszolgáló nevét tartalmazó sztringre mutató mutató.

pstrVerb
Mutató egy sztringre, amely tartalmazza a kérés küldésekor használni kívánt metódust. Lehet POST, HEAD vagy GET.

dwContext
Az objektum környezeti azonosítója CHttpFile . A paraméterről további információt a Megjegyzésekben talál.

pConnection
Egy CHttpConnection-objektumra mutató mutató.

Megjegyzések

Soha ne hozzon létre közvetlenül objektumot CHttpFile ; ehelyett hívja meg a CInternetSession::OpenURL vagy CHttpConnection::OpenRequest parancsot.

Az MFC az alapértelmezett értéket dwContext az CHttpFile objektumot létrehozó CInternetSession objektumból küldi el az CHttpFile objektumnak. Amikor meghív CInternetSession::OpenURL vagy CHttpConnection létrehoz egy objektumot CHttpFile , felülbírálhatja az alapértelmezett értéket, hogy a környezetazonosítót egy ön által választott értékre állítsa. A rendszer visszaadja a környezetazonosítót a CInternetSession::OnStatusCallback fájlnak, hogy állapotot adjon meg azon az objektumon, amellyel azonosítva van. A környezetazonosítóval kapcsolatos további információkért tekintse meg az internet első lépései: WinInet című cikket.

CHttpFile::EndRequest

Hívja meg ezt a tagfüggvényt egy HTTP-kiszolgálónak küldött kérés befejezéséhez a SendRequestEx tagfüggvénnyel.

BOOL EndRequest(
    DWORD dwFlags = 0,
    LPINTERNET_BUFFERS lpBuffIn = NULL,
    DWORD_PTR dwContext = 1);

Paraméterek

dwFlags
A műveletet leíró jelzők. A megfelelő jelzők listáját a HttpEndRequest a Windows SDK-ban találja.

lpBuffIn
Mutasson egy inicializált INTERNET_BUFFERS , amely a művelethez használt bemeneti puffert írja le.

dwContext
A művelet környezeti azonosítója CHttpFile . A paraméterről további információt a Megjegyzésekben talál.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0. Ha a hívás sikertelen, állapítsa meg a hiba okát a kidobott CInternetException objektum vizsgálatával.

Megjegyzések

A dwContext alapértelmezett értékét az MFC küldi el az CHttpFile objektumnak az objektumot létrehozó CHttpFileCInternetSession objektumból. Amikor meghívja a CInternetSession::OpenURL vagy CHttpConnection parancsot egy CHttpFile objektum létrehozásához, felülbírálhatja az alapértelmezett beállítást, hogy a környezetazonosítót egy ön által választott értékre állítsa. A rendszer visszaadja a környezetazonosítót a CInternetSession::OnStatusCallback fájlnak, hogy állapotot adjon meg azon az objektumon, amellyel azonosítva van. A környezetazonosítóval kapcsolatos további információkért tekintse meg az Internet első lépései: WinInet című cikket.

CHttpFile::GetFileURL

Hívja meg ezt a tagfüggvényt a HTTP-fájl nevének URL-címként való lekéréséhez.

virtual CString GetFileURL() const;

Visszaadott érték

A fájlhoz társított erőforrásra hivatkozó URL-címet tartalmazó CString-objektum .

Megjegyzések

Ezt a tagfüggvényt csak a SendRequest sikeres hívása vagy az CHttpFileOpenURL által sikeresen létrehozott objektum esetén használja.

CHttpFile::GetObject

Hívja meg ezt a tagfüggvényt a hozzá társított objektum nevének lekéréséhez CHttpFile.

CString GetObject() const;

Visszaadott érték

Az objektum nevét tartalmazó CString objektum.

Megjegyzések

Ezt a tagfüggvényt csak a SendRequest sikeres hívása vagy az CHttpFileOpenURL által sikeresen létrehozott objektum esetén használja.

CHttpFile::GetVerb

Hívja meg ezt a tagfüggvényt az ehhez CHttpFiletársított HTTP-parancs (vagy metódus) lekéréséhez.

CString GetVerb() const;

Visszaadott érték

A HTTP-ige (vagy metódus) nevét tartalmazó CString objektum.

Megjegyzések

Ezt a tagfüggvényt csak a SendRequest sikeres hívása vagy az CHttpFileOpenURL által sikeresen létrehozott objektum esetén használja.

CHttpFile::QueryInfo

Hívja meg ezt a tagfüggvényt, hogy válasz- vagy kérésfejléceket küldjön vissza egy HTTP-kérésből.

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;

Paraméterek

dwInfoLevel
A lekérdezéshez tartozó attribútum és a kért információ típusát meghatározó alábbi jelzők kombinációja:

  • HTTP_QUERY_CUSTOM Megkeresi a fejléc nevét, és visszaadja ezt az értéket az lpvBufferben a kimeneten. HTTP_QUERY_CUSTOM helyességi értéket ad, ha a fejléc nem található.

  • HTTP_QUERY_FLAG_REQUEST_HEADERS Az alkalmazás általában lekérdezi a válaszfejléceket, de az alkalmazás ezzel a jelzővel is lekérdezheti a kérésfejléceket.

  • HTTP_QUERY_FLAG_SYSTEMTIME Azon fejlécek esetében, amelyeknek az értéke dátum/idő sztring (például "Last-Modified-Time"), ez a jelölő a fejléc értékét egy standard Win32 SYSTEMTIME-struktúraként adja vissza, amely nem követeli meg az alkalmazástól az adatok elemzését. Ha ezt a jelzőt használja, érdemes lehet a SYSTEMTIME függvény felülbírálását használni.

  • HTTP_QUERY_FLAG_NUMBER Azon fejlécek esetében, amelyek értéke egy szám , például az állapotkód, ez a jelző 32 bites számként adja vissza az adatokat.

A lehetséges értékek listáját a Megjegyzések szakaszban találja.

lpvBuffer
Az információt fogadó puffer mutatója.

lpdwBufferLength
Bejegyzéskor ez az adatpuffer hosszát tartalmazó értékre mutat karakterek vagy bájtok számában. Erről a paraméterről részletesebb információt a Megjegyzések szakaszban talál.

lpdwIndex
Mutató egy nulla alapú fejlécindexhez. Null érték is lehet. Ezzel a jelzővel több, azonos nevű fejlécet is számba lehet adni. Bemenetkor az lpdwIndex a visszaadni kívánt fejléc indexét jelzi. Kimeneten az lpdwIndex a következő fejléc indexét jelzi. Ha a következő index nem található, ERROR_HTTP_HEADER_NOT_FOUND lesz visszaadva.

Str
Hivatkozás a visszaadott adatokat fogadó CString objektumra.

dwIndex
Indexérték. Lásd: lpdwIndex.

pSysTime
Egy Win32 SYSTEMTIME-struktúra mutatója.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0. Ha a hívás sikertelen, a Rendszer meghívhatja a Win32 GetLastError függvényt a hiba okának meghatározásához.

Megjegyzések

Ezt a tagfüggvényt csak a SendRequest sikeres hívása vagy az CHttpFileOpenURL által sikeresen létrehozott objektum esetén használja.

A következő adattípusok QueryInfokérhetők le:

  • sztringek (alapértelmezett)

  • SYSTEMTIME (az "Data:" "Expires:" stb. fejlécekhez)

  • DWORD (STATUS_CODE, CONTENT_LENGTH stb.)

Ha egy sztringet a pufferbe ír, és a tagfüggvény sikeres, lpdwBufferLength a sztring hosszát mínusz 1 karakterben tartalmazza a befejező NULL karakterhez.

A lehetséges dwInfoLevel értékek a következők:

  • 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

Hívja meg ezt a tagfüggvényt, hogy lekérje a HTTP-kéréshez társított állapotkódot, és helyezze el a megadott dwStatusCode paraméterben.

BOOL QueryInfoStatusCode(DWORD& dwStatusCode) const;

Paraméterek

dwStatusCode
Egy állapotkódra mutató hivatkozás. Az állapotkódok a kért esemény sikerességét vagy sikertelenségét jelzik. Az állapotkód-leírások kiválasztásával kapcsolatban lásd a Megjegyzések című témakört.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0. Ha a hívás sikertelen, a Rendszer meghívhatja a Win32 GetLastError függvényt a hiba okának meghatározásához.

Megjegyzések

Ezt a tagfüggvényt csak a SendRequest sikeres hívása vagy az CHttpFileOpenURL által sikeresen létrehozott objektum esetén használja.

A HTTP-állapotkódok csoportokba tartoznak, amelyek a kérés sikerességét vagy sikertelenségét jelzik. Az alábbi táblázatok az állapotkódcsoportokat és a leggyakoribb HTTP-állapotkódokat ismertetik.

Csoport Meaning
200-299 Success
300-399 Információ
400-499 Kérési hiba
500-599 Kiszolgálóhiba

Gyakori HTTP-állapotkódok:

Állapotkód Meaning
200 URL-cím található, az átvitel a következő:
400 Nem értelmezhető kérés
404 A kért URL-cím nem található
405 A kiszolgáló nem támogatja a kért metódust
ötszáz Ismeretlen kiszolgálóhiba
503 Kiszolgálói kapacitás elérve

CHttpFile::SendRequest

Hívja meg ezt a tagfüggvényt, hogy kérést küldjön egy HTTP-kiszolgálónak.

BOOL SendRequest(
    LPCTSTR pstrHeaders = NULL,
    DWORD dwHeadersLen = 0,
    LPVOID lpOptional = NULL,
    DWORD dwOptionalLen = 0);

BOOL SendRequest(
    CString& strHeaders,
    LPVOID lpOptional = NULL,
    DWORD dwOptionalLen = 0);

Paraméterek

pstrHeaders
A küldendő fejlécek nevét tartalmazó sztringre mutató mutató.

dwHeadersLen
A pstrHeaders által azonosított fejlécek hossza.

lpOptional
Bármely választható adat, amely közvetlenül a kérelemfejlécek után küldhető el. Ezt általában POST és PUT műveletekhez használják. Ez NULL értékű lehet, ha nem kötelező adatokat küldeni.

dwOptionalLen
Az lpOptional hossza.

strHeaders
Az elküldött kérés fejléceinek nevét tartalmazó sztring.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0. Ha a hívás sikertelen, állapítsa meg a hiba okát a kidobott CInternetException objektum vizsgálatával.

CHttpFile::SendRequestEx

Hívja meg ezt a tagfüggvényt, hogy kérést küldjön egy HTTP-kiszolgálónak.

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);

Paraméterek

dwTotalLen
A kérelemben elküldendő bájtok száma.

dwFlags
A műveletet leíró jelzők. A megfelelő jelzők listáját a HttpSendRequestEx fájlban találja a Windows SDK-ban.

dwContext
A művelet környezeti azonosítója CHttpFile . A paraméterről további információt a Megjegyzésekben talál.

lpBuffIn
Mutasson egy inicializált INTERNET_BUFFERS , amely a művelethez használt bemeneti puffert írja le.

lpBuffOut
Mutasson egy inicializált INTERNET_BUFFERS, amely a művelethez használt kimeneti puffert írja le.

Visszaadott érték

Sikertelen, ha sikeres. Ha a hívás sikertelen, állapítsa meg a hiba okát a kidobott CInternetException objektum vizsgálatával.

Megjegyzések

Ez a függvény lehetővé teszi, hogy az alkalmazás adatokat küldjön a Write and WriteString metódussal CInternetFile. A függvény felülbírálásának meghívása előtt ismernie kell az elküldendő adatok hosszát. Az első felülbírálással megadhatja az elküldeni kívánt adatok hosszát. A második felülbírálás INTERNET_BUFFERS struktúrákra mutató mutatókat fogad el, amelyek a puffer részletes leírására használhatók.

Miután a fájlba írta a tartalmat, hívja meg az EndRequestet a művelet befejezéséhez.

A dwContext alapértelmezett értékét az MFC küldi el az CHttpFile objektumnak az objektumot létrehozó CHttpFileCInternetSession objektumból. Amikor meghívja a CInternetSession::OpenURL vagy CHttpConnection parancsot egy CHttpFile objektum létrehozásához, felülbírálhatja az alapértelmezett beállítást, hogy a környezetazonosítót egy ön által választott értékre állítsa. A rendszer visszaadja a környezetazonosítót a CInternetSession::OnStatusCallback fájlnak, hogy állapotot adjon meg azon az objektumon, amellyel azonosítva van. A környezetazonosítóval kapcsolatos további információkért tekintse meg az internet első lépései: WinInet című cikket.

Example

Ez a kódtöredék elküldi egy sztring tartalmát egy MFCISAPI.DLL nevű DLL-nek a LOCALHOST-kiszolgálón. Bár ez a példa csak egy hívást WriteStringhasznál, a blokkokban lévő adatok több hívással történő elküldése elfogadható.

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();

Lásd még

CInternetFile osztály
hierarchiadiagram
CInternetFile osztály
CGopherFile osztály
CHttpConnection osztály