Windows.Web.Http.Filters Ruang nama

Menyediakan kelas untuk mengirim permintaan HTTP dan antarmuka untuk membuat filter untuk menargetkan layanan HTTP dan REST di aplikasi UWP.

Kelas

HttpBaseProtocolFilter

Filter protokol dasar untuk instans HttpClient .

HttpCacheControl

Menyediakan kontrol cache HTTP lokal untuk respons terhadap permintaan HTTP menurut metode di namespace Windows.Web.Http dan Windows.Web.Http.Filters .

HttpServerCustomValidationRequestedEventArgs

Menyediakan data untuk peristiwa ServerCustomValidationRequested .

Antarmuka

IHttpFilter

Antarmuka yang digunakan untuk mengimplementasikan filter kustom untuk instans HttpClient .

Enum

HttpCacheReadBehavior

Menunjukkan apakah permintaan baca menurut metode kelas di namespace Windows.Web.Http dan Windows.Web.Http.Filters menggunakan cache HTTP lokal untuk respons.

HttpCacheWriteBehavior

Menunjukkan apakah konten yang dikembalikan oleh permintaan yang digunakan oleh metode kelas di namespace Windows.Web.Http dan Windows.Web.Http.Filters ditulis ke cache HTTP lokal.

HttpCookieUsageBehavior

Menentukan perilaku penggunaan cookie yang digunakan di properti CookieUsageBehavior .

Keterangan

Namespace Windows.Web.Http dan namespace Windows.Web.Http.Headers dan Windows.Web.Http.Filters menyediakan antarmuka pemrograman HTTP untuk aplikasi UWP yang ingin tersambung ke layanan HTTP. API HTTP menyediakan dukungan yang konsisten di JavaScript, C#, VB.NET, dan C++ untuk pengembang. API juga mendukung penambahan filter kustom pada permintaan dan respons. Filter dapat menyederhanakan penanganan masalah jaringan yang lebih kompleks. API juga memungkinkan kontrol aplikasi membaca dan menulis perilaku penembolokan.

Kelas di namespace Windows.Web.Http mendukung penggunaan filter berdasarkan kelas di namespace Windows.Web.Http.Filters. Kelas di namespace Windows.Web.Http.Filters juga memungkinkan kontrol aplikasi membaca dan menulis perilaku penembolokan pada klien. HttpCacheDirectiveHeaderValueCollection di Windows.Web.Http.Headers menyediakan kontainer koleksi untuk instans arahan cache di header HTTP Cache-Control pada konten HTTP yang terkait dengan permintaan atau respons HTTP. Header Cache-Control memungkinkan aplikasi memiliki kontrol lebih atas perilaku penembolokan.

Kelas di namespace Windows.Web.Http.Headers mewakili header HTTP seperti yang didefinisikan dalam RFC 2616 oleh IETF.

Kelas HttpClient di namespace Windows.Web.Http menyediakan kelas dasar untuk mengirim permintaan HTTP dan menerima respons HTTP. Filter menyediakan mekanisme handler untuk membantu masalah layanan HTTP umum. Filter sederhana dapat dirangkai bersama dalam urutan untuk menangani masalah layanan HTTP yang lebih kompleks.

Filter HTTP adalah kotak hitam yang mengambil pesan permintaan HTTP dan menghasilkan pesan respons HTTP. Bagaimana filter mendapatkan respons HTTP ditentukan oleh pengembang filter. Filter biasanya menambahkan atau mengubah header, menangani otorisasi (mungkin menggunakan WebAuthenticationBroker), atau mengizinkan atau melarang permintaan berdasarkan kondisi jaringan. Filter biasanya membuat perubahan lalu meneruskan permintaan ke filter dalam, yang biasanya diatur saat filter dibuat.

Pendekatan ini memungkinkan filter untuk hanya bertanggung jawab atas aspek tertentu dari eksekusi permintaan HTTP dan mendelegasikan aspek lain ke filter lain. Filter dapat menerapkan penembolokan, autentikasi, pengalihan, cookie, komunikasi aktual dengan server, atau kombinasi ini. Filter paling bawah (dasar) biasanya akan menjadi filter yang melakukan komunikasi aktual dengan jaringan.

Banyak aplikasi yang menggunakan HTTP untuk akses jaringan sering kali perlu merespons berbagai kondisi. Beberapa contoh umum meliputi:

  • Coba lagi jaringan (dengan back-off).
  • Beradaptasi dengan jaringan terukur (saat koneksi jaringan roaming, misalnya).
  • Autentikasi ke situs jejaring sosial.
  • Pengelogan dan telemetri.

Tidak sulit untuk menangani masalah jaringan ini sendiri. Ini menjadi masalah kompleks ketika beberapa masalah ini digabungkan. Dukungan untuk filter kustom di namespace Layanan Windows.Web.Http.Filters memungkinkan pengembang membuat kode modular untuk filter sederhana. Serangkaian filter sederhana dapat ditautkan ke dalam rantai filter untuk menangani kombinasi masalah yang kompleks. Pengembang memilih segala sesuatu tentang rantai filter:

  • Filter yang akan ditambahkan.
  • Perintah untuk menempatkannya dalam rantai filter.

HttpClient adalah kelas utama yang digunakan untuk mengirim dan menerima permintaan melalui HTTP. HttpBaseProtocolFilter adalah apa yang digunakan HttpClient untuk mengirim dan menerima data. Jadi HttpBaseProtocolFilter biasanya merupakan bagian bawah dari rantai filter kustom apa pun. HttpBaseProtocolFilter juga dapat digunakan untuk mengontrol penembolokan dan perilaku lain dari koneksi HTTP. Setiap instans HttpClient dapat memiliki rantai filter atau alur yang berbeda.

Gambar rantai filter HTTP

Untuk menulis filter kustom, aplikasi mengimplementasikan versi kustom antarmuka IHttpFilter . Kode untuk mengimplementasikan perilaku filter ada di metode IHttpFilter.SendRequestAsync . Filter dapat ditulis dalam C#/VB.NET atau C++. Filter dapat dipanggil dan digunakan dari bahasa apa pun yang didukung untuk aplikasi UWP termasuk JavaScript.

Kode sampel menunjukkan filter untuk menambahkan header kustom ke permintaan dan respons HTTP.

public class PlugInFilter : IHttpFilter {
    private IHttpFilter innerFilter;

    public PlugInFilter(IHttpFilter innerFilter) {
        if (innerFilter == null) {
            throw new ArgumentException("innerFilter cannot be null.");
        }
        this.innerFilter = innerFilter;
    }

    public IAsyncOperationWithProgress<HttpResponseMessage, HttpProgress> SendRequestAsync(HttpRequestMessage request) {
        return AsyncInfo.Run<HttpResponseMessage, HttpProgress>(async (cancellationToken, progress) =>
        {
            request.Headers.Add("Custom-Header", "CustomRequestValue");
            HttpResponseMessage response = await innerFilter.SendRequestAsync(request).AsTask(cancellationToken, progress);

            cancellationToken.ThrowIfCancellationRequested();

            response.Headers.Add("Custom-Header", "CustomResponseValue");
        return response;
        });
    }

    public void Dispose() {
        innerFilter.Dispose();
        GC.SuppressFinalize(this);
    }
}

Untuk menggunakan filter, aplikasi menggunakan konstruktor HttpClient(IHttpFilter) yang melewati antarmuka filter yang akan digunakan untuk instans HttpClient . Untuk menyiapkan rantai filter, filter baru ditautkan ke filter sebelumnya dan ke HttpBaseProtocolFilter di bagian bawah.

Kode sampel menunjukkan pembuatan HttpClient untuk menggunakan filter kustom.

internal static void CreateHttpClient(ref HttpClient httpClient)
{
    if (httpClient != null) {
        httpClient.Dispose();
    }

    // HttpClient can be extended by plugging multiple filters together,
    // providing HttpClient with the configured filter pipeline.
    var baseFilter = new HttpBaseProtocolFilter();

    // Adds a custom header to every request and response message.
    var myFilter = new PlugInFilter(baseFilter);
    httpClient = new HttpClient(myFilter);

}

Lihat juga