İzlenecek yol: Görevleri ve XML HTTP İsteklerini Kullanarak Bağlanma

Bu örnek, bir web servise HTTP GET ve POST istekleri göndermek için IXMLHTTPRequest2 ve IXMLHTTPRequest2Callback arabirimlerinin bir Windows Mağazası uygulaması içinde nasıl kullanılacağını gösterir.Olarak IXMLHTTPRequest2 görevleri ile birlikte, diğer görevlerle oluşturur kod yazabilirsiniz.Örneğin, indirme görevini görevler zincirinin bir parçası olarak kullanabilirsiniz.İndirme görevi iş iptal edildiğinde de yanıt verebilir.

İpucuİpucu

C++ KALAN SDK gelen HTTP isteklerini gerçekleştirmek için kullanabileceğiniz bir Windows Mağazası C++ uygulaması kullanarak app veya Masaüstü C++ uygulama.Daha fazla bilgi için bkz. C++ REST SDK (Kod Adı "Casablanca").

Görevler hakkında daha fazla bilgi için bkz. Görev Parallelliği (Eşzamanlılık Çalışma Zamanı).Bir Windows Mağazası uygulaması içinde görevleri kullanma hakkında daha fazla bilgi için bkz: Asynchronous programming in C++ ve Windows Mağazası Uygulamaları için C++ Uygulamasında Zaman Uyumsuz İşlemler Oluşturma.

Bu belge, önce HttpRequest ve bunun destekleyici sınıflarını nasıl oluşturulacağını gösterir.Daha sonra bu sınıfı, C++ ve XAML kullanan bir Windows Mağazası uygulamasından nasıl kullanacağınızı gösterir.

Bu belgede açıklanan daha tam bir HttpReader sınıfı kullanan bir örnek için bkz: JavaScript ve C++'de Bing Maps Trip Optimizer, Windows Mağazası uygulaması geliştirme.Örneğin kullanan başka bir IXMLHTTPRequest2 , ancak olmayan görevleri kullanın, bkz: Quickstart: Connecting using XML HTTP Request (IXMLHTTPRequest2).

İpucuİpucu

IXMLHTTPRequest2 ve IXMLHTTPRequest2Callback arabirimleri, bir Windows Mağazası uygulaması için bizim önerdiğimiz arabirimlerdir.Ayrıca, bu örneği bir masaüstü uygulamasında kullanmak için uyarlayabilirsiniz.

HttpRequest, HttpRequestBuffersCallback ve HttpRequestStringCallback Sınıflarını Tanımlama

HTTP üzerinden bir web isteği oluşturmak için IXMLHTTPRequest2 arabirimini kullandığınız zaman, sunucudan cevap almak için ve diğer görevleri tepki vermek için IXMLHTTPRequest2Callback arabirimini uygularsınız.Bu örnek, web istekleri oluşturmak için HttpRequest sınıfı ve cevapları işlemek için de HttpRequestBuffersCallback ve HttpRequestStringCallback sınıflarını tanımlar.HttpRequestBuffersCallback ve HttpRequestStringCallback sınıfları HttpRequest sınıfını destekler; uygulama kodundan yalnızca HttpRequest sınıfıyla çalışırsınız.

GetAsync, PostAsync yöntemleri, HttpRequest sınıfının yöntemleri size HTTP GET ve POST işlemlerini başarıyla başlatmanızı sağlar.Bu yöntemler sunucu yanıtlarını bir dize olarak okumak için HttpRequestStringCallback sınıfını kullanırlar.SendAsync ve ReadAsync yöntemleri parçalar içinde büyük içerik akışı yapmanızı sağlar.Bu yöntemlerin her biri işlemi göstermek için concurrency::task döndürür.GetAsync ve PostAsync yöntemleri task<std::wstring> değeri üretirler, wstring bölümünün sunucunun cevabını temsil ettiği yerde.SendAsync ve ReadAsync yöntemleri task<void> değerleri üretirler; gönderme ve okuma işlemleri tamamladığında bu görevler tamamlanır.

Çünkü IXMLHTTPRequest2 arabirimleri işlem zaman uyumsuz olarak, bu örnek kullanır concurrency::task_completion_event geri çağırma nesnesi tamamlar veya karşıdan yükleme işlemini iptal eder sonra tamamlar bir görev oluşturmak için.HttpRequest sınıfı nihai sonucu ayarlamak için görev tabanlı bir devamlılık oluşturur.HttpRequest sınıfı önceki devamlılık görevi bir hata üretiyor mu veya önceki görev bir hata üretti mi ya da iptal edildi mi emin olmak için görev tabanlı bir devamlılık kullanır.Görev tabanlı devamlılıklar hakkında daha fazla bilgi için bkz.Görev Parallelliği (Eşzamanlılık Çalışma Zamanı)

İptal etmeyi desteklemek için HttpRequest, HttpRequestBuffersCallback, ve HttpRequestStringCallback sınıfları iptal belirteçleri kullanırlar.HttpRequestBuffersCallback ve HttpRequestStringCallback sınıfları iptal işlemine yanıt vermek için görev tamamlanma olay etkinleştirmesi için concurrency::cancellation_token::register_callback metodunu kullanırlar.Bu iptal işlemi çağrısı yüklemeyi iptal eder.İptal etme hakkında daha fazla bilgi için bkz: PPL'de İptal.

HttpRequest Sınıfını tanımlamak için

  1. Boş bir XAML uygulama projesi oluşturmak için Visual C++ Boş Uygulama (XAML) şablonunu kullanın.Bu örnek proje adları UsingIXMLHTTPRequest2.

  2. Projeye bir HttpRequest.h adlı bir başlık/üstbilgi dosyası ve HttpRequest.cpp adlı bir kaynak dosyası ekleyin.

  3. Pch.h içine bu kodu ekleyin:

  4. HttpRequest.h içine bu kodu ekleyin:

  5. HttpRequest.cpp içine bu kodu ekleyin:

HttpRequest Sınıfını Bir Windows Mağazası Uygulamasında Kullanma

Bu bölümde HttpRequest sınıfını bir Windows Mağazası uygulaması içinde nasıl kullanılacağını gösterir.Uygulama bir URL kaynağı tanımlayan bir giriş kutusu ve GET ve POST işlemleri gerçekleştiren bir düğme komutları ve geçerli işlemi iptal eden bir düğme komutları sağlar.

HttpRequest Sınıfını kullanmak için

  1. MainPage.xaml tanımlayan StackPanel öğesi aşağıdaki gibi.

  2. MainPage.xaml.h içine şu #include yönergeyi ekleyin:

  3. MainPage.xaml.h içinde bu private üye değişkenlerini MainPage sınıfına ekleyin:

  4. MainPage.xaml.h içinde şunu bildirin private yöntemi ProcessHttpRequest:

  5. MainPage.xaml.cpp içinde using ifadelerini ekleyin:

  6. MainPage.xaml.cpp içinde GetButton_Click, PostButton_Click, ve CancelButton_Click yöntemleri, MainPage sınıfının yöntemleri, uygulayın.

    İpucuİpucu

    Eğer uygulamanız iptal işlemi için destek gerektirmiyorsa, concurrency::cancellation_token::none öğesini HttpRequest::GetAsync ve HttpRequest::PostAsync yöntemleri için geçirin.

  7. MainPage.xaml.cpp içinde MainPage::ProcessHttpRequest yöntemini uygulayın.

  8. Proje özelliklerinde, Bağlayıcı, Giriş'in altında, şunları belirtin shcore.lib ve msxml6.lib.

Çalışan uygulama aşağıdadır:

Çalışan Windows mağazası uygulaması

Sonraki Adımlar

Eşzamanlılık Çalışma Zamanı İzlenecek Yollar

Ayrıca bkz.

Başvuru

task Sınıfı (Eşzamanlılık Çalışma Zamanı)

task_completion_event Sınıfı

Kavramlar

Görev Parallelliği (Eşzamanlılık Çalışma Zamanı)

PPL'de İptal

Windows Mağazası Uygulamaları için C++ Uygulamasında Zaman Uyumsuz İşlemler Oluşturma

Diğer Kaynaklar

Asynchronous programming in C++

Quickstart: Connecting using XML HTTP Request (IXMLHTTPRequest2)

IXMLHTTPRequest2

IXMLHTTPRequest2Callback