Bagikan melalui


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

CObject

CFile

CStdioFile

CInternetFile

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