HttpListenerRequest.Url Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan objek yang Uri diminta oleh klien.
public:
property Uri ^ Url { Uri ^ get(); };
public Uri? Url { get; }
public Uri Url { get; }
member this.Url : Uri
Public ReadOnly Property Url As Uri
Nilai Properti
Objek Uri yang mengidentifikasi sumber daya yang diminta oleh klien.
Contoh
Contoh kode berikut menunjukkan menggunakan Url properti .
public static void ShowRequestProperties1 (HttpListenerRequest request)
{
// Display the MIME types that can be used in the response.
string[] types = request.AcceptTypes;
if (types != null)
{
Console.WriteLine("Acceptable MIME types:");
foreach (string s in types)
{
Console.WriteLine(s);
}
}
// Display the language preferences for the response.
types = request.UserLanguages;
if (types != null)
{
Console.WriteLine("Acceptable natural languages:");
foreach (string l in types)
{
Console.WriteLine(l);
}
}
// Display the URL used by the client.
Console.WriteLine("URL: {0}", request.Url.OriginalString);
Console.WriteLine("Raw URL: {0}", request.RawUrl);
Console.WriteLine("Query: {0}", request.QueryString);
// Display the referring URI.
Console.WriteLine("Referred by: {0}", request.UrlReferrer);
//Display the HTTP method.
Console.WriteLine("HTTP Method: {0}", request.HttpMethod);
//Display the host information specified by the client;
Console.WriteLine("Host name: {0}", request.UserHostName);
Console.WriteLine("Host address: {0}", request.UserHostAddress);
Console.WriteLine("User agent: {0}", request.UserAgent);
}
Public Shared Sub ShowRequestProperties1(ByVal request As HttpListenerRequest)
' Display the MIME types that can be used in the response.
Dim types As String() = request.AcceptTypes
If types IsNot Nothing Then
Console.WriteLine("Acceptable MIME types:")
For Each s As String In types
Console.WriteLine(s)
Next
End If
' Display the language preferences for the response.
types = request.UserLanguages
If types IsNot Nothing Then
Console.WriteLine("Acceptable natural languages:")
For Each l As String In types
Console.WriteLine(l)
Next
End If
' Display the URL used by the client.
Console.WriteLine("URL: {0}", request.Url.OriginalString)
Console.WriteLine("Raw URL: {0}", request.RawUrl)
Console.WriteLine("Query: {0}", request.QueryString)
' Display the referring URI.
Console.WriteLine("Referred by: {0}", request.UrlReferrer)
' Display the HTTP method.
Console.WriteLine("HTTP Method: {0}", request.HttpMethod)
' Display the host information specified by the client.
Console.WriteLine("Host name: {0}", request.UserHostName)
Console.WriteLine("Host address: {0}", request.UserHostAddress)
Console.WriteLine("User agent: {0}", request.UserAgent)
End Sub
Keterangan
Properti Url memungkinkan Anda untuk mendapatkan semua informasi yang Uri tersedia dari objek. Jika Anda hanya perlu mengetahui teks mentah permintaan URI, pertimbangkan untuk menggunakan properti sebagai gantinya RawUrl .
Properti Url null jika Uri dari klien tidak dapat diurai.
Properti UnescapeRequestUrl menunjukkan jika HttpListener menggunakan URI mentah yang tidak dilewati alih-alih URI yang dikonversi di mana nilai yang dikodekan persen dikonversi dan langkah-langkah normalisasi lainnya diambil.
Saat instans HttpListener menerima permintaan melalui layanan http.sys
, instans string URI yang disediakan oleh http.sys
akan dibuat, dan menampilkannya sebagai properti HttpListenerRequest.Url.
Layanan http.sys
memperlihatkan dua string URI permintaan:
URI mentah
URI yang dikonversi
URI mentah adalah System.Uri yang disediakan di baris permintaan dari permintaan HTTP:
GET /path/
Host: www.contoso.com
URI mentah yang disediakan oleh http.sys
untuk permintaan yang disebutkan di atas, adalah "/path/". Ini mewakili string yang mengikuti kata kerja HTTP saat dikirim melalui jaringan.
Layanan http.sys
membuat URI yang dikonversi dari informasi yang disediakan dalam permintaan menggunakan URI yang disediakan di baris permintaan HTTP dan header Host untuk menentukan server asal tempat permintaan harus diteruskan. Ini dilakukan dengan membandingkan informasi dari permintaan dengan satu set awalan URI terdaftar. Agar dapat membandingkan nilai-nilai tersebut, beberapa normalisasi dengan permintaan perlu dilakukan. Untuk sampel di atas, URI yang dikonversi adalah sebagai berikut:
http://www.contoso.com/path/
Layanan http.sys
menggabungkan nilai properti Uri.Host dan string di baris permintaan untuk membuat URI yang dikonversi. Selain itu, http.sys
dan System.Uri kelas juga melakukan hal berikut:
Membatalkan escape semua nilai yang dikodekan persen.
Mengonversi karakter non-ASCII yang dikodekan persen menjadi representasi karakter UTF-16. Perhatikan bahwa karakter UTF-8 dan ANSI/DBCS didukung, begitu juga karakter Unicode (pengodean Unicode menggunakan format %uXXXX).
Menjalankan langkah normalisasi lainnya, seperti pemadatan jalur.
Karena permintaan tidak berisi informasi apa pun tentang pengodean yang digunakan untuk nilai yang dikodekan persen, mungkin tidak mungkin untuk menentukan pengodean yang benar hanya dengan menguraikan nilai yang dikodekan persen.
Oleh karena itu http.sys
, menyediakan dua kunci registri untuk memodifikasi proses:
Kunci Registri | Nilai Default | Deskripsi |
---|---|---|
EnableNonUTF8 | 1 | Jika nol, http.sys hanya menerima URL yang dikodekan UTF-8.Jika bukan nol, http.sys juga menerima URL yang dikodekan ANSI atau DBCS dalam permintaan. |
FavorUTF8 | 1 | Jika bukan nol, http.sys selalu mencoba mendekode URL sebagai UTF-8 terlebih dahulu; jika konversi tersebut gagal dan EnableNonUTF8 bukan nol, Http.sys kemudian mencoba mendekodekannya sebagai ANSI atau DBCS.Jika nol (dan EnableNonUTF8 bukan nol), http.sys mencoba mendekodenya sebagai ANSI atau DBCS; jika itu tidak berhasil, ini akan mencoba konversi UTF-8. |
Saat HttpListener menerima permintaan, ini menggunakan URI yang dikonversi dari http.sys
sebagai input ke properti Url.
Ada kebutuhan untuk mendukung karakter selain karakter dan angka di URI. Contohnya adalah URI berikut, yang digunakan untuk mengambil informasi pelanggan untuk nomor pelanggan "1/3812":
http://www.contoso.com/Customer('1%2F3812')/
Perhatikan garis miring yang dikodekan persen dalam Uri (%2F). Ini perlu, karena dalam kasus ini karakter garis miring mewakili data dan bukan pemisah jalur.
Meneruskan string ke konstruktor Uri akan mengarah ke URI berikut:
http://www.contoso.com/Customer('1/3812')/
Memisahkan jalur menjadi segmen-segmennya akan menghasilkan elemen-elemen berikut:
Customer('1
3812')
Ini bukanlah niat dari pengirim permintaan.
UnescapeRequestUrl Jika properti diatur ke false, maka ketika HttpListener menerima permintaan, properti menggunakan URI mentah alih-alih URI yang dikonversi dari http.sys
sebagai input ke Url properti .