Kelas CHttpFile
Menyediakan fungsionalitas untuk meminta dan membaca file di server HTTP.
Sintaks
class CHttpFile : public CInternetFile
Anggota
Konstruktor yang Dilindungi
Nama | Deskripsi |
---|---|
CHttpFile::CHttpFile | CHttpFile Membuat objek. |
Metode Publik
Nama | Deskripsi |
---|---|
CHttpFile::AddRequestHeaders | Menambahkan header ke permintaan yang dikirim ke server HTTP. |
CHttpFile::EndRequest | Mengakhiri permintaan yang dikirim ke server HTTP dengan fungsi anggota SendRequestEx . |
CHttpFile::GetFileURL | Mendapatkan URL untuk file yang ditentukan. |
CHttpFile::GetObject | Mendapatkan objek target kata kerja dalam permintaan ke server HTTP. |
CHttpFile::GetVerb | Mendapatkan kata kerja yang digunakan dalam permintaan ke server HTTP. |
CHttpFile::QueryInfo | Mengembalikan header respons atau permintaan dari server HTTP. |
CHttpFile::QueryInfoStatusCode | Mengambil kode status yang terkait dengan permintaan HTTP dan menempatkannya dalam parameter yang disediakan dwStatusCode . |
CHttpFile::SendRequest | Mengirim permintaan ke server HTTP. |
CHttpFile::SendRequestEx | Mengirim permintaan ke server HTTP menggunakan metode Write atau WriteString dari CInternetFile . |
Keterangan
Jika sesi Internet Anda membaca data dari server HTTP, Anda harus membuat instans CHttpFile
.
Untuk mempelajari selengkapnya tentang cara CHttpFile
kerja dengan kelas Internet MFC lainnya, lihat artikel Pemrograman Internet dengan WinInet.
Hierarki Warisan
CHttpFile
Persyaratan
Header: afxinet.h
CHttpFile::AddRequestHeaders
Panggil fungsi anggota ini untuk menambahkan satu atau beberapa header permintaan HTTP ke handel permintaan 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);
Parameter
pstrHeaders
Penunjuk ke string yang berisi header atau header untuk ditambahkan ke permintaan. Setiap header harus dihentikan oleh pasangan CR/LF.
dwFlags
Memodifikasi semantik header baru. Bisa jadi salah satu dari yang berikut:
HTTP_ADDREQ_FLAG_COALESCE Menggabungkan header dengan nama yang sama, menggunakan bendera untuk menambahkan header pertama yang ditemukan ke header berikutnya. Misalnya, "Terima: teks/*" diikuti dengan "Terima: audio/*" menghasilkan pembentukan header tunggal "Terima: teks/*, audio/*". Terserah aplikasi panggilan untuk memastikan skema kohesif sehubungan dengan data yang diterima oleh permintaan yang dikirim dengan header yang dikoalesced atau terpisah.
HTTP_ADDREQ_FLAG_REPLACE Melakukan hapus dan tambahkan untuk mengganti header saat ini. Nama header akan digunakan untuk menghapus header saat ini, dan nilai lengkap akan digunakan untuk menambahkan header baru. Jika nilai header kosong dan header ditemukan, header akan dihapus. Jika tidak kosong, nilai header diganti.
HTTP_ADDREQ_FLAG_ADD_IF_NEW Hanya menambahkan header jika belum ada. Jika ada, kesalahan akan dikembalikan.
HTTP_ADDREQ_FLAG_ADD Digunakan dengan REPLACE. Menambahkan header jika tidak ada.
dwHeadersLen
Panjangnya, dalam karakter, pstrHeaders. Jika ini adalah -1L, maka pstrHeaders diasumsikan sebagai nol dihentikan dan panjangnya dihitung.
Str
Referensi ke objek CString yang berisi header permintaan atau header yang akan ditambahkan.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0. Jika panggilan gagal, fungsi Win32 GetLastError dapat dipanggil untuk menentukan penyebab kesalahan.
Keterangan
AddRequestHeaders
menambahkan header format bebas tambahan ke handel permintaan HTTP. Ini ditujukan untuk digunakan oleh klien canggih yang membutuhkan kontrol terperinci atas permintaan yang tepat yang dikirim ke server HTTP.
Catatan
Aplikasi dapat meneruskan beberapa header di pstrHeaders atau str untuk AddRequestHeaders
panggilan menggunakan HTTP_ADDREQ_FLAG_ADD atau HTTP_ADDREQ_FLAG_ADD_IF_NEW. Jika aplikasi mencoba menghapus atau mengganti header menggunakan HTTP_ADDREQ_FLAG_REMOVE atau HTTP_ADDREQ_FLAG_REPLACE, hanya satu header yang dapat disediakan di lpszHeaders.
CHttpFile::CHttpFile
Fungsi anggota ini dipanggil untuk membuat CHttpFile
objek.
CHttpFile(
HINTERNET hFile,
HINTERNET hSession,
LPCTSTR pstrObject,
LPCTSTR pstrServer,
LPCTSTR pstrVerb,
DWORD_PTR dwContext);
CHttpFile(
HINTERNET hFile,
LPCTSTR pstrVerb,
LPCTSTR pstrObject,
CHttpConnection* pConnection);
Parameter
hFile
Handel ke file Internet.
hSession
Handel ke sesi Internet.
pstrObject
Penunjuk ke string yang berisi CHttpFile
objek .
pstrServer
Penunjuk ke string yang berisi nama server.
pstrVerb
Penunjuk ke string yang berisi metode yang akan digunakan saat mengirim permintaan. Dapat berupa POST, HEAD, atau GET.
dwContext
Pengidentifikasi konteks untuk CHttpFile
objek. Lihat Keterangan untuk informasi selengkapnya tentang parameter ini.
pConnection
Penunjuk ke objek CHttpConnection .
Keterangan
Anda tidak pernah membuat objek secara CHttpFile
langsung; melainkan memanggil CInternetSession::OpenURL atau CHttpConnection::OpenRequest sebagai gantinya.
Nilai default untuk dwContext
dikirim oleh MFC ke CHttpFile
objek dari objek CInternetSession yang membuat CHttpFile
objek. Saat memanggil CInternetSession::OpenURL
atau CHttpConnection
membuat CHttpFile
objek, Anda dapat mengambil alih default untuk mengatur pengidentifikasi konteks ke nilai yang Anda pilih. Pengidentifikasi konteks dikembalikan ke CInternetSession::OnStatusCallback untuk memberikan status pada objek yang diidentifikasi. Lihat artikel Langkah Pertama Internet: WinInet untuk informasi selengkapnya tentang pengidentifikasi konteks.
CHttpFile::EndRequest
Panggil fungsi anggota ini untuk mengakhiri permintaan yang dikirim ke server HTTP dengan fungsi anggota SendRequestEx .
BOOL EndRequest(
DWORD dwFlags = 0,
LPINTERNET_BUFFERS lpBuffIn = NULL,
DWORD_PTR dwContext = 1);
Parameter
dwFlags
Bendera yang menjelaskan operasi. Untuk daftar bendera yang sesuai, lihat HttpEndRequest di Windows SDK.
lpBuffIn
Penunjuk ke INTERNET_BUFFERS yang diinisialisasi yang menjelaskan buffer input yang digunakan untuk operasi.
dwContext
Pengidentifikasi konteks untuk CHttpFile
operasi. Lihat Keterangan untuk informasi selengkapnya tentang parameter ini.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0. Jika panggilan gagal, tentukan penyebab kegagalan dengan memeriksa objek CInternetException yang dilemparkan.
Keterangan
Nilai default untuk dwContext dikirim oleh MFC ke CHttpFile
objek dari objek CInternetSession yang membuat CHttpFile
objek. Saat Anda memanggil CInternetSession::OpenURL atau CHttpConnection untuk membuat CHttpFile
objek, Anda dapat mengambil alih default untuk mengatur pengidentifikasi konteks ke nilai yang Anda pilih. Pengidentifikasi konteks dikembalikan ke CInternetSession::OnStatusCallback untuk memberikan status pada objek yang diidentifikasi. Lihat artikel Langkah Pertama Internet: WinInet untuk informasi selengkapnya tentang pengidentifikasi konteks.
CHttpFile::GetFileURL
Panggil fungsi anggota ini untuk mendapatkan nama file HTTP sebagai URL.
virtual CString GetFileURL() const;
Tampilkan Nilai
Objek CString yang berisi URL yang merujuk sumber daya yang terkait dengan file ini.
Keterangan
Gunakan fungsi anggota ini hanya setelah panggilan berhasil ke SendRequest atau pada objek yang CHttpFile
berhasil dibuat oleh OpenURL.
CHttpFile::GetObject
Panggil fungsi anggota ini untuk mendapatkan nama objek yang terkait dengan ini CHttpFile
.
CString GetObject() const;
Tampilkan Nilai
Objek CString yang berisi nama objek.
Keterangan
Gunakan fungsi anggota ini hanya setelah panggilan berhasil ke SendRequest atau pada objek yang CHttpFile
berhasil dibuat oleh OpenURL.
CHttpFile::GetVerb
Panggil fungsi anggota ini untuk mendapatkan kata kerja HTTP (atau metode) yang terkait dengan ini CHttpFile
.
CString GetVerb() const;
Tampilkan Nilai
Objek CString yang berisi nama kata kerja HTTP (atau metode).
Keterangan
Gunakan fungsi anggota ini hanya setelah panggilan berhasil ke SendRequest atau pada objek yang CHttpFile
berhasil dibuat oleh OpenURL.
CHttpFile::QueryInfo
Panggil fungsi anggota ini untuk mengembalikan header respons atau permintaan dari permintaan 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;
Parameter
dwInfoLevel
Kombinasi atribut untuk kueri dan bendera berikut yang menentukan jenis informasi yang diminta:
HTTP_QUERY_CUSTOM Menemukan nama header dan mengembalikan nilai ini di lpvBuffer pada output. HTTP_QUERY_CUSTOM melempar pernyataan jika header tidak ditemukan.
HTTP_QUERY_FLAG_REQUEST_HEADERS Biasanya, aplikasi meminta header respons, tetapi aplikasi juga dapat meminta header permintaan dengan menggunakan bendera ini.
HTTP_QUERY_FLAG_SYSTEMTIME Untuk header yang nilainya adalah string tanggal/waktu, seperti "Last-Modified-Time", bendera ini mengembalikan nilai header sebagai struktur SYSTEMTIME Win32 standar yang tidak mengharuskan aplikasi mengurai data. Jika Anda menggunakan bendera ini, Anda mungkin ingin menggunakan
SYSTEMTIME
penimpaan fungsi.HTTP_QUERY_FLAG_NUMBER Untuk header yang nilainya adalah angka, seperti kode status, bendera ini mengembalikan data sebagai angka 32-bit.
Lihat bagian Keterangan untuk daftar nilai yang mungkin.
lpvBuffer
Penunjuk ke buffer yang menerima informasi.
lpdwBufferLength
Pada entri, ini menunjuk ke nilai yang berisi panjang buffer data, dalam jumlah karakter atau byte. Lihat bagian Keterangan untuk informasi selengkapnya tentang parameter ini.
lpdwIndex
Penunjuk ke indeks header berbasis nol. Bisa NULL. Gunakan bendera ini untuk menghitung beberapa header dengan nama yang sama. Pada input, lpdwIndex menunjukkan indeks header yang ditentukan untuk dikembalikan. Pada output, lpdwIndex menunjukkan indeks header berikutnya. Jika indeks berikutnya tidak dapat ditemukan, ERROR_HTTP_HEADER_NOT_FOUND dikembalikan.
Str
Referensi ke objek CString yang menerima informasi yang dikembalikan.
dwIndex
Nilai indeks. Lihat lpdwIndex.
pSysTime
Penunjuk ke struktur SYSTEMTIME Win32.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0. Jika panggilan gagal, fungsi Win32 GetLastError dapat dipanggil untuk menentukan penyebab kesalahan.
Keterangan
Gunakan fungsi anggota ini hanya setelah panggilan berhasil ke SendRequest atau pada objek yang CHttpFile
berhasil dibuat oleh OpenURL.
Anda dapat mengambil jenis data berikut dari QueryInfo
:
string (default)
SYSTEMTIME
(untuk "Data:" "Kedaluwarsa:" dll, header)DWORD (untuk STATUS_CODE, CONTENT_LENGTH, dll.)
Ketika string ditulis ke buffer, dan fungsi anggota berhasil, lpdwBufferLength
berisi panjang string dalam karakter dikurangi 1 untuk karakter NULL yang mengakhiri.
Kemungkinan nilai dwInfoLevel meliputi:
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
Panggil fungsi anggota ini untuk mendapatkan kode status yang terkait dengan permintaan HTTP dan letakkan di parameter dwStatusCode yang disediakan.
BOOL QueryInfoStatusCode(DWORD& dwStatusCode) const;
Parameter
dwStatusCode
Referensi ke kode status. Kode status menunjukkan keberhasilan atau kegagalan peristiwa yang diminta. Lihat Keterangan untuk pilihan deskripsi kode status.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0. Jika panggilan gagal, fungsi Win32 GetLastError dapat dipanggil untuk menentukan penyebab kesalahan.
Keterangan
Gunakan fungsi anggota ini hanya setelah panggilan berhasil ke SendRequest atau pada objek yang CHttpFile
berhasil dibuat oleh OpenURL.
Kode status HTTP termasuk dalam grup yang menunjukkan keberhasilan atau kegagalan permintaan. Tabel berikut menguraikan grup kode status dan kode status HTTP yang paling umum.
Grupkan | Makna |
---|---|
200-299 | Berhasil |
300-399 | Informasi |
400-499 | Kesalahan permintaan |
500-599 | Kesalahan server |
Kode Status HTTP umum:
Kode status | Makna |
---|---|
200 | URL yang terletak, transmisi mengikuti |
400 | Permintaan yang tidak memenuhi syarat |
404 | URL yang diminta tidak ditemukan |
405 | Server tidak mendukung metode yang diminta |
500 | Kesalahan server tidak diketahui |
503 | Kapasitas server tercapai |
CHttpFile::SendRequest
Panggil fungsi anggota ini untuk mengirim permintaan ke server 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);
Parameter
pstrHeaders
Penunjuk ke string yang berisi nama header yang akan dikirim.
dwHeadersLen
Panjang header yang diidentifikasi oleh pstrHeaders.
lpOptional
Setiap data opsional untuk dikirim segera setelah header permintaan. Ini umumnya digunakan untuk operasi POST dan PUT. Ini bisa null jika tidak ada data opsional untuk dikirim.
dwOptionalLen
Panjang lpOptional.
strHeaders
String yang berisi nama header untuk permintaan yang dikirim.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0. Jika panggilan gagal, tentukan penyebab kegagalan dengan memeriksa objek CInternetException yang dilemparkan.
CHttpFile::SendRequestEx
Panggil fungsi anggota ini untuk mengirim permintaan ke server 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);
Parameter
dwTotalLen
Jumlah byte yang akan dikirim dalam permintaan.
dwFlags
Bendera yang menjelaskan operasi. Untuk daftar bendera yang sesuai, lihat HttpSendRequestEx di Windows SDK.
dwContext
Pengidentifikasi konteks untuk CHttpFile
operasi. Lihat Keterangan untuk informasi selengkapnya tentang parameter ini.
lpBuffIn
Penunjuk ke INTERNET_BUFFERS yang diinisialisasi yang menjelaskan buffer input yang digunakan untuk operasi.
lpBuffOut
Penunjuk ke INTERNET_BUFFERS yang diinisialisasi yang menjelaskan buffer output yang digunakan untuk operasi.
Tampilkan Nilai
Bukan nol jika berhasil. Jika panggilan gagal, tentukan penyebab kegagalan dengan memeriksa objek CInternetException yang dilemparkan.
Keterangan
Fungsi ini memungkinkan aplikasi Anda mengirim data menggunakan metode Write and WriteString dari CInternetFile
. Anda harus mengetahui panjang data yang akan dikirim sebelum memanggil ambil alih fungsi ini. Penimpaan pertama memungkinkan Anda menentukan panjang data yang ingin Anda kirim. Penimpaan kedua menerima pointer untuk INTERNET_BUFFERS struktur, yang dapat digunakan untuk menggambarkan buffer dengan sangat rinci.
Setelah konten ditulis ke file, panggil EndRequest untuk mengakhiri operasi.
Nilai default untuk dwContext dikirim oleh MFC ke CHttpFile
objek dari objek CInternetSession yang membuat CHttpFile
objek. Saat Anda memanggil CInternetSession::OpenURL atau CHttpConnection untuk membuat CHttpFile
objek, Anda dapat mengambil alih default untuk mengatur pengidentifikasi konteks ke nilai yang Anda pilih. Pengidentifikasi konteks dikembalikan ke CInternetSession::OnStatusCallback untuk memberikan status pada objek yang diidentifikasi. Lihat artikel Langkah Pertama Internet: WinInet untuk informasi selengkapnya tentang pengidentifikasi konteks.
Contoh
Fragmen kode ini mengirimkan konten string ke DLL bernama MFCISAPI.DLL di server LOCALHOST. Meskipun contoh ini hanya menggunakan satu panggilan ke WriteString
, menggunakan beberapa panggilan untuk mengirim data dalam blok dapat diterima.
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();
Lihat juga
Kelas CInternetFile
Bagan Hierarki
Kelas CInternetFile
Kelas CGopherFile
Kelas CHttpConnection