HttpListenerRequest.Url Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Uri Získá objekt požadovaný klientem.
public:
property Uri ^ Url { Uri ^ get(); };
public Uri? Url { get; }
public Uri Url { get; }
member this.Url : Uri
Public ReadOnly Property Url As Uri
Hodnota vlastnosti
Objekt Uri , který identifikuje prostředek požadovaný klientem.
Příklady
Následující příklad kódu ukazuje použití Url vlastnosti .
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
Poznámky
Vlastnost Url umožňuje získat všechny informace dostupné z objektu Uri . Pokud potřebujete znát pouze nezpracovaný text požadavku URI, zvažte použití RawUrl vlastnosti .
Vlastnost Url je null, pokud Uri z klienta nelze analyzovat.
Vlastnost UnescapeRequestUrl označuje, jestli HttpListener používá nezpracovaný unescaped URI místo převedeného identifikátoru URI, kde jsou převedeny hodnoty s kódováním procent a jsou provedena další kroky normalizace.
HttpListener Když instance obdrží požadavek prostřednictvím http.sys
služby, vytvoří instanci řetězce identifikátoru URI poskytnutého službou http.sys
a zpřístupní ji jako HttpListenerRequest.Url vlastnost .
Služba http.sys
zveřejňuje dva řetězce identifikátoru URI požadavku:
Nezpracovaný identifikátor URI
Převedený identifikátor URI
Nezpracovaný identifikátor URI je System.Uri uvedený na řádku požadavku HTTP:
GET /path/
Host: www.contoso.com
Nezpracovaný identifikátor URI, který http.sys
poskytuje pro výše uvedený požadavek, je /cesta/. Představuje řetězec následující za příkazem HTTP, který byl odeslán přes síť.
Služba http.sys
vytvoří převedený identifikátor URI z informací uvedených v požadavku pomocí identifikátoru URI zadaného na řádku požadavku HTTP a v hlavičce hostitele k určení serveru původu, na který se má požadavek předávat. To se provádí porovnáním informací z požadavku se sadou registrovaných předpon identifikátorů URI. Aby bylo možné tyto hodnoty porovnat, je potřeba provést určitou normalizaci požadavku. Pro výše uvedený příklad by převedený identifikátor URI byl následující:
http://www.contoso.com/path/
Služba http.sys
zkombinuje Uri.Host hodnotu vlastnosti a řetězec na řádku požadavku a vytvoří převedený identifikátor URI. Kromě toho http.sys
a System.Uri třída také proveďte následující akce:
Zruší uchýcení všech procent zakódovaných hodnot.
Převede procenta kódované znaky, které nejsou ASCII, na reprezentaci znaků UTF-16. Všimněte si, že jsou podporovány znaky UTF-8 a ANSI/DBCS i znaky Unicode (kódování Unicode ve formátu %uXXXX).
Provede další kroky normalizace, jako je komprese cesty.
Vzhledem k tomu, že požadavek neobsahuje žádné informace o kódování použitém pro hodnoty zakódované v procentech, nemusí být možné určit správné kódování pouhým parsováním hodnot zakódovaných v procentech.
Proto http.sys
poskytuje dva klíče registru pro úpravu procesu:
Klíč registru | Výchozí hodnota | Description |
---|---|---|
EnableNonUTF8 | 1 | Pokud je nula, http.sys akceptuje pouze adresy URL s kódováním UTF-8.Pokud není nulová, http.sys akceptuje v požadavcích také adresy URL kódované ANSI nebo DBCS. |
FavorUTF8 | 1 | Pokud není nulový, http.sys vždy se nejprve pokusí dekódovat adresu URL jako UTF-8. Pokud se převod nezdaří a EnableNonUTF8 je nenulový, Http.sys pak se pokusí dekódovat jako ANSI nebo DBCS.Pokud nula (a EnableNonUTF8 je nenulová), http.sys pokusí se ji dekódovat jako ANSI nebo DBCS. Pokud to nebude úspěšné, pokusí se o převod UTF-8. |
Když HttpListener obdrží požadavek, použije převedený identifikátor URI z jako http.sys
vstup do Url vlastnosti .
V identifikátorech URI jsou kromě znaků a čísel potřeba podpůrné znaky. Příkladem je následující identifikátor URI, který se používá k načtení informací o zákazníkovi pro číslo zákazníka "1/3812":
http://www.contoso.com/Customer('1%2F3812')/
Všimněte si lomítka zakódovaného procentem v identifikátoru URI (%2F). To je nezbytné, protože v tomto případě lomítko představuje data, nikoli oddělovač cesty.
Předání řetězce konstruktoru URI povede k následujícímu identifikátoru URI:
http://www.contoso.com/Customer('1/3812')/
Rozdělení cesty na její segmenty by vedlo k následujícím prvkům:
Customer('1
3812')
Nejedná se o záměr odesílatele žádosti.
UnescapeRequestUrl Pokud je vlastnost nastavená na hodnotu false, použije při HttpListener přijetí požadavku nezpracovaný identifikátor URI místo převedeného identifikátoru URI z http.sys
jako vstup do Url vlastnosti.
Platí pro
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro