Aracılığıyla paylaş


CHttpFile Sınıfı

BIR HTTP sunucusunda dosya isteme ve okuma işlevselliği sağlar.

Sözdizimi

class CHttpFile : public CInternetFile

Üyeler

Korumalı Oluşturucular

Ad Tanım
CHttpFile::CHttpFile Bir CHttpFile nesnesi oluşturur.

Genel Yöntemler

Ad Tanım
CHttpFile::AddRequestHeaders HTTP sunucusuna gönderilen isteğe üst bilgiler ekler.
CHttpFile::EndRequest SendRequestEx üye işleviyle bir HTTP sunucusuna gönderilen isteği sonlandırır.
CHttpFile::GetFileURL Belirtilen dosyanın URL'sini alır.
CHttpFile::GetObject BIR HTTP sunucusuna yönelik istekteki fiilin hedef nesnesini alır.
CHttpFile::GetVerb HTTP sunucusuna yönelik bir istekte kullanılan fiili alır.
CHttpFile::QueryInfo HTTP sunucusundan yanıt veya istek üst bilgilerini döndürür.
CHttpFile::QueryInfoStatusCode BIR HTTP isteğiyle ilişkili durum kodunu alır ve sağlanan dwStatusCode parametreye yerleştirir.
CHttpFile::SendRequest BIR HTTP sunucusuna istek gönderir.
CHttpFile::SendRequestEx write veya writestring yöntemlerini kullanarak bir HTTP sunucusuna CInternetFileistek gönderir.

Açıklamalar

İnternet oturumunuz bir HTTP sunucusundan veri okuyorsa, örneğini CHttpFileoluşturmanız gerekir.

Diğer MFC İnternet sınıfları ile nasıl CHttpFile çalıştığı hakkında daha fazla bilgi edinmek için WinInet ile İnternet Programlama makalesine bakın.

Devralma Hiyerarşisi

Cobject

Cfile

Cstdiofile

Cınternetfile

CHttpFile

Gereksinimler

Üst bilgi: afxinet.h

CHttpFile::AddRequestHeaders

HTTP isteği tanıtıcısına bir veya daha fazla HTTP isteği üst bilgisi eklemek için bu üye işlevini çağırın.

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

Parametreler

pstrHeaders
İsteğin sonuna eklenecek üst bilgiyi veya üst bilgileri içeren bir dize işaretçisi. Her üst bilgi bir CR/LF çifti tarafından sonlandırılmalıdır.

Dwflags
Yeni üst bilgilerin semantiğini değiştirir. Aşağıdakilerden biri olabilir:

  • HTTP_ADDREQ_FLAG_COALESCE, sonraki üst bilgide bulunan ilk üst bilgiyi eklemek için bayrağını kullanarak aynı ada ait üst bilgileri birleştirir. Örneğin, "Accept: text/*" ve ardından "Accept: audio/*", "Accept: text/*, audio/*" tek üst bilgisinin oluşmasına neden olur. Birleştirilmiş veya ayrı üst bilgilerle gönderilen istekler tarafından alınan verilerle uyumlu bir düzen sağlamak, çağıran uygulamaya bağlıdır.

  • HTTP_ADDREQ_FLAG_REPLACE Geçerli üst bilgiyi değiştirmek için bir kaldırma ve ekleme gerçekleştirir. Üst bilgi adı geçerli üst bilgiyi kaldırmak için kullanılır ve yeni üst bilgiyi eklemek için tam değer kullanılır. Üst bilgi-değer boşsa ve üst bilgi bulunursa kaldırılır. Boş değilse, üst bilgi-değer değiştirilir.

  • HTTP_ADDREQ_FLAG_ADD_IF_NEW Yalnızca zaten yoksa üst bilgiyi ekler. Varsa bir hata döndürülür.

  • HTTP_ADDREQ_FLAG_ADD DEĞİşTİr ile kullanılır. Yoksa üst bilgiyi ekler.

dwHeadersLen
pstrHeaders'ın karakter cinsinden uzunluğu. Bu -1L ise pstrHeaders'ın sıfır sonlandırıldığı varsayılır ve uzunluk hesaplanır.

Str
Eklenecek istek üst bilgisini veya üst bilgilerini içeren bir CString nesnesine başvuru.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0. Çağrı başarısız olursa, hatanın nedenini belirlemek için Win32 işlevi GetLastError çağrılabilir.

Açıklamalar

AddRequestHeaders HTTP isteği tutamacına ek, serbest biçimli üst bilgiler ekler. HTTP sunucusuna gönderilen tam istek üzerinde ayrıntılı denetime ihtiyaç duyan gelişmiş istemciler tarafından kullanılmak üzere tasarlanmıştır.

Dekont

Uygulama, HTTP_ADDREQ_FLAG_ADD veya HTTP_ADDREQ_FLAG_ADD_IF_NEW kullanarak bir AddRequestHeaders çağrı için pstrHeaders veya str içinde birden çok üst bilgi geçirebilir. Uygulama HTTP_ADDREQ_FLAG_REMOVE veya HTTP_ADDREQ_FLAG_REPLACE kullanarak bir üst bilgiyi kaldırmaya veya değiştirmeyi denerse, lpszHeaders içinde yalnızca bir üst bilgi sağlanabilir.

CHttpFile::CHttpFile

Bu üye işlevi bir CHttpFile nesne oluşturmak için çağrılır.

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

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

Parametreler

hFile
İnternet dosyasının tanıtıcısı.

hSession
İnternet oturumu tanıtıcısı.

pstrObject
Nesnesini içeren bir dizenin işaretçisi CHttpFile .

pstrServer
Sunucunun adını içeren bir dize işaretçisi.

pstrVerb
İstek gönderilirken kullanılacak yöntemi içeren bir dize işaretçisi. POST, HEAD veya GET olabilir.

dwContext
Nesnenin bağlam tanımlayıcısı CHttpFile . Bu parametre hakkında daha fazla bilgi için bkz . Açıklamalar .

p Bağlan ion
CHttp Bağlan ion nesnesinin işaretçisi.

Açıklamalar

Hiçbir zaman doğrudan bir CHttpFile nesne oluşturmazsınız; bunun yerine CInternetSession::OpenURL veya CHttp Bağlan ion::OpenRequest çağrısı yapın.

için dwContext varsayılan değer MFC CHttpFile tarafından nesneyi oluşturan CInternetSession nesnesinden nesneye CHttpFile gönderilir. Bir nesneyi veya oluşturmak CHttpFile için çağırdığınızda CInternetSession::OpenURLCHttpConnection, bağlam tanımlayıcısını seçtiğiniz bir değere ayarlamak için varsayılanı geçersiz kılabilirsiniz. Bağlam tanımlayıcısı, tanımlandığı nesnede durum sağlamak için CInternetSession::OnStatusCallback'e döndürülür. Bağlam tanımlayıcısı hakkında daha fazla bilgi için İnternet İlk Adımlar: WinInet makalesine bakın.

CHttpFile::EndRequest

SendRequestEx üye işleviyle bir HTTP sunucusuna gönderilen isteği sonlandırmak için bu üye işlevini çağırın.

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

Parametreler

Dwflags
İşlemi açıklayan bayraklar. Uygun bayrakların listesi için bkz . Windows SDK'sında HttpEndRequest .

lpBuffIn
İşlem için kullanılan giriş arabelleğinin açıklandığı, başlatılan bir INTERNET_BUFFERS işaretçisi.

dwContext
İşlemin bağlam tanımlayıcısı CHttpFile . Bu parametre hakkında daha fazla bilgi için bkz. Açıklamalar.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0. Çağrı başarısız olursa, oluşan CInternetException nesnesini inceleyerek hatanın nedenini belirleyin.

Açıklamalar

dwContext için varsayılan değer MFC CHttpFile tarafından nesneyi oluşturan CInternetSession nesnesinden nesneye CHttpFile gönderilir. Nesne CHttpFile oluşturmak için CInternetSession::OpenURL veya CHttp Bağlan ion çağrısı yaptığınızda, bağlam tanımlayıcısını seçtiğiniz bir değere ayarlamak için varsayılanı geçersiz kılabilirsiniz. Bağlam tanımlayıcısı, tanımlandığı nesnede durum sağlamak için CInternetSession::OnStatusCallback'e döndürülür. Bağlam tanımlayıcısı hakkında daha fazla bilgi için İnternet İlk Adımları: WinInet makalesine bakın.

CHttpFile::GetFileURL

HTTP dosyasının adını URL olarak almak için bu üye işlevini çağırın.

virtual CString GetFileURL() const;

İade Değeri

Bu dosyayla ilişkilendirilmiş kaynağa başvuran URL içeren bir CString nesnesi.

Açıklamalar

Bu üye işlevini yalnızca SendRequest'e yapılan başarılı bir çağrıdan sonra veya OpenURL tarafından başarıyla oluşturulan bir CHttpFile nesnede kullanın.

CHttpFile::GetObject

Bu ile ilişkilendirilmiş nesnenin adını almak için bu CHttpFileüye işlevini çağırın.

CString GetObject() const;

İade Değeri

Nesnenin adını içeren bir CString nesnesi.

Açıklamalar

Bu üye işlevini yalnızca SendRequest'e yapılan başarılı bir çağrıdan sonra veya OpenURL tarafından başarıyla oluşturulan bir CHttpFile nesnede kullanın.

CHttpFile::GetVerb

Bu ile ilişkilendirilmiş HTTP fiilini (veya yöntemini) almak için bu üye işlevini çağırın CHttpFile.

CString GetVerb() const;

İade Değeri

HTTP fiilinin (veya yönteminin) adını içeren bir CString nesnesi.

Açıklamalar

Bu üye işlevini yalnızca SendRequest'e yapılan başarılı bir çağrıdan sonra veya OpenURL tarafından başarıyla oluşturulan bir CHttpFile nesnede kullanın.

CHttpFile::QueryInfo

Http isteğinden yanıt veya istek üst bilgileri döndürmek için bu üye işlevini çağır.

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;

Parametreler

dwInfoLevel
Sorguya yönelik özniteliğin ve istenen bilgi türünü belirten aşağıdaki bayrakların birleşimi:

  • HTTP_QUERY_CUSTOM Üst bilgi adını bulur ve çıktıdaki lpvBuffer'da bu değeri döndürür. HTTP_QUERY_CUSTOM üst bilgi bulunamazsa bir onay oluşturur.

  • HTTP_QUERY_FLAG_REQUEST_HEADERS Genellikle, uygulama yanıt üst bilgilerini sorgular, ancak bir uygulama bu bayrağı kullanarak istek üst bilgilerini de sorgulayabilir.

  • HTTP_QUERY_FLAG_SYSTEMTIME Değeri "Son Değiştirme Zamanı" gibi bir tarih/saat dizesi olan üst bilgiler için, bu bayrak üst bilgi değerini uygulamanın verileri ayrıştırmasını gerektirmeyen standart bir Win32 SYSTEMTIME yapısı olarak döndürür. Bu bayrağı kullanırsanız, işlevin SYSTEMTIME geçersiz kılmasını kullanmak isteyebilirsiniz.

  • HTTP_QUERY_FLAG_NUMBER Değeri sayı olan (durum kodu gibi) üst bilgiler için bu bayrak verileri 32 bit sayı olarak döndürür.

Olası değerlerin listesi için Açıklamalar bölümüne bakın.

lpvBuffer
Bilgileri alan arabelleğe yönelik bir işaretçi.

lpdwBufferLength
Girişte, bu değer veri arabelleğinin uzunluğunu karakter veya bayt sayısı cinsinden içeren bir değere işaret eder. Bu parametre hakkında daha ayrıntılı bilgi için Açıklamalar bölümüne bakın.

lpdwIndex
Sıfır tabanlı üst bilgi dizinine yönelik bir işaretçi. NULL olabilir. Aynı ada sahip birden çok üst bilgiyi numaralandırmak için bu bayrağı kullanın. Girişte lpdwIndex, döndürülecek belirtilen üst bilginin dizinini gösterir. Çıkışta lpdwIndex, sonraki üst bilginin dizinini gösterir. Sonraki dizin bulunamazsa ERROR_HTTP_HEADER_NOT_FOUND döndürülür.

Str
Döndürülen bilgileri alan CString nesnesine başvuru.

dwIndex
Dizin değeri. Bkz. lpdwIndex.

pSysTime
Win32 SYSTEMTIME yapısının işaretçisi.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0. Çağrı başarısız olursa, hatanın nedenini belirlemek için Win32 işlevi GetLastError çağrılabilir.

Açıklamalar

Bu üye işlevini yalnızca SendRequest'e yapılan başarılı bir çağrıdan sonra veya OpenURL tarafından başarıyla oluşturulan bir CHttpFile nesnede kullanın.

aşağıdaki veri türlerini içinden QueryInfoalabilirsiniz:

  • dizeler (varsayılan)

  • SYSTEMTIME ("Veri:" "Süre sonu:" vb. üst bilgiler için)

  • DWORD (STATUS_CODE, CONTENT_LENGTH vb. için)

Arabelleğe bir dize yazıldığında ve üye işlevi başarılı olduğunda, lpdwBufferLength sonlandırıcı NULL karakteri için dizenin uzunluğunu eksi 1 karakter olarak içerir.

Olası dwInfoLevel değerleri şunlardır:

  • 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

Http isteğiyle ilişkili durum kodunu almak ve sağlanan dwStatusCode parametresine yerleştirmek için bu üye işlevini çağırın.

BOOL QueryInfoStatusCode(DWORD& dwStatusCode) const;

Parametreler

dwStatusCode
Durum koduna başvuru. Durum kodları, istenen olayın başarısını veya başarısızlığını gösterir. Durum kodu açıklamalarının seçimi için bkz. Açıklamalar.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0. Çağrı başarısız olursa, hatanın nedenini belirlemek için Win32 işlevi GetLastError çağrılabilir.

Açıklamalar

Bu üye işlevini yalnızca SendRequest'e yapılan başarılı bir çağrıdan sonra veya OpenURL tarafından başarıyla oluşturulan bir CHttpFile nesnede kullanın.

HTTP durum kodları, isteğin başarısını veya başarısızlığını gösteren gruplara ayrılır. Aşağıdaki tablolarda durum kodu grupları ve en yaygın HTTP durum kodları özetlenmektedir.

Gruplandırma Anlamı
200-299 Başarılı
300-399 Bilgiler
400-499 İstek hatası
500-599 Sunucu hatası

Ortak HTTP Durum Kodları:

Durum kodu Anlamı
200 URL bulundu, iletim şu şekildedir
400 Anlaşılmayan istek
404 İstenen URL bulunamadı
405 Sunucu istenen yöntemi desteklemiyor
500 Bilinmeyen sunucu hatası
503 Sunucu kapasitesine ulaşıldı

CHttpFile::SendRequest

HTTP sunucusuna istek göndermek için bu üye işlevini çağır.

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

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

Parametreler

pstrHeaders
Gönderilecek üst bilgilerin adını içeren bir dize işaretçisi.

dwHeadersLen
pstrHeaders tarafından tanımlanan üst bilgilerin uzunluğu.

lpOptional
İstek üst bilgilerinden hemen sonra gönderilecek isteğe bağlı veriler. Bu genellikle POST ve PUT işlemleri için kullanılır. Bu, gönderilecek isteğe bağlı veri yoksa NULL olabilir.

dwOptionalLen
lpOptional uzunluğu.

strHeaders
Gönderilen isteğin üst bilgilerinin adını içeren bir dize.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0. Çağrı başarısız olursa, oluşan CInternetException nesnesini inceleyerek hatanın nedenini belirleyin.

CHttpFile::SendRequestEx

HTTP sunucusuna istek göndermek için bu üye işlevini çağır.

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

Parametreler

dwTotalLen
İstekte gönderilecek bayt sayısı.

Dwflags
İşlemi açıklayan bayraklar. Uygun bayrakların listesi için bkz . Windows SDK'sında HttpSendRequestEx .

dwContext
İşlemin bağlam tanımlayıcısı CHttpFile . Bu parametre hakkında daha fazla bilgi için bkz. Açıklamalar.

lpBuffIn
İşlem için kullanılan giriş arabelleğinin açıklandığı, başlatılan bir INTERNET_BUFFERS işaretçisi.

lpBuffOut
İşlem için kullanılan çıkış arabelleğinin açıklandığı, başlatılan bir INTERNET_BUFFERS işaretçisi.

İade Değeri

Başarılı olursa sıfır olmayan. Çağrı başarısız olursa, oluşan CInternetException nesnesini inceleyerek hatanın nedenini belirleyin.

Açıklamalar

Bu işlev uygulamanızın write ve writestring yöntemlerini kullanarak veri göndermesine CInternetFileolanak tanır. Bu işlevin geçersiz kılmalarını çağırmadan önce gönderilecek verilerin uzunluğunu bilmeniz gerekir. İlk geçersiz kılma, göndermek istediğiniz verilerin uzunluğunu belirtmenize olanak tanır. İkinci geçersiz kılma, INTERNET_BUFFERS yapıların işaretçilerini kabul eder ve bu, arabelleği ayrıntılı olarak açıklamak için kullanılabilir.

dosyaya içerik yazıldıktan sonra, işlemi sonlandırmak için EndRequest'i çağırın.

dwContext için varsayılan değer MFC CHttpFile tarafından nesneyi oluşturan CInternetSession nesnesinden nesneye CHttpFile gönderilir. Nesne CHttpFile oluşturmak için CInternetSession::OpenURL veya CHttp Bağlan ion çağrısı yaptığınızda, bağlam tanımlayıcısını seçtiğiniz bir değere ayarlamak için varsayılanı geçersiz kılabilirsiniz. Bağlam tanımlayıcısı, tanımlandığı nesnede durum sağlamak için CInternetSession::OnStatusCallback'e döndürülür. Bağlam tanımlayıcısı hakkında daha fazla bilgi için İnternet İlk Adımlar: WinInet makalesine bakın.

Örnek

Bu kod parçası, bir dizenin içeriğini LOCALHOST sunucusundaki MFCISAPI.DLL adlı DLL'ye gönderir. Bu örnekte yalnızca bir çağrısı WriteStringkullanılsa da, bloklar halinde veri göndermek için birden çok çağrı kullanılması kabul edilebilir.

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

Ayrıca bkz.

CInternetFile Sınıfı
Hiyerarşi Grafiği
CInternetFile Sınıfı
CGopherFile Sınıfı
CHttpConnection Sınıfı