Podpora PROTOKOLU HTTP v .NET
Protokol HTTP (Hypertext Transfer Protocol) je protokol pro vyžádání prostředků z webového serveru. Třída System.Net.Http.HttpClient zveřejňuje schopnost odesílat požadavky HTTP a přijímat odpovědi HTTP z prostředku identifikovaného identifikátorem URI. Mnoho typů prostředků je k dispozici na webu a HTTP definuje sadu metod požadavků pro přístup k těmto prostředkům.
Metody požadavků HTTP
Metody žádosti jsou diferencovány několika faktory, nejprve jejich slovesem, ale také následujícími vlastnostmi:
- Metoda požadavku je idempotentní , pokud ji lze úspěšně zpracovat vícekrát beze změny výsledku. Další informace naleznete v dokumentu RFC 9110: 9.2.2. Idempotentní metody.
- Metoda požadavku je uložená v mezipaměti, pokud je možné uložit odpovídající odpověď pro opakované použití. Další informace naleznete v dokumentu RFC 9110: Oddíl 9.2.3. Metody a Ukládání do mezipaměti
- Metoda požadavku se považuje za bezpečnou metodu , pokud nezmění stav prostředku. Všechny bezpečné metody jsou také idempotentní, ale ne všechny idempotentní metody jsou považovány za bezpečné. Další informace naleznete v dokumentu RFC 9110: Oddíl 9.2.1. Sejf metody.
Metoda HTTP: | Je idempotentní | Je možné ukládat do mezipaměti | Je bezpečné |
---|---|---|---|
GET |
✔️ Ano | ✔️ Ano | ✔️ Ano |
POST |
❌ Ne | ⚠️ † Zřídka | ❌ Ne |
PUT |
✔️ Ano | ❌ Ne | ❌ Ne |
PATCH |
❌ Ne | ❌ Ne | ❌ Ne |
DELETE |
✔️ Ano | ❌ Ne | ❌ Ne |
HEAD |
✔️ Ano | ✔️ Ano | ✔️ Ano |
OPTIONS |
✔️ Ano | ❌ Ne | ✔️ Ano |
TRACE |
✔️ Ano | ❌ Ne | ✔️ Ano |
CONNECT |
❌ Ne | ❌ Ne | ❌ Ne |
†Toto
POST
metoda je uložena pouze v mezipaměti, pokud jsou k dispozici příslušnéCache-Control
hlavičky neboExpires
hlavičky odpovědi. To je v praxi velmi neobvyklé.
Stavové kódy HTTP
.NET poskytuje komplexní podporu pro protokol HTTP, který účty pro většinu internetového provozu, s HttpClient. Další informace naleznete v tématu Vytváření požadavků HTTP pomocí třídy HttpClient. Aplikace přijímají chyby protokolu HTTP zachytáváním HttpRequestException. Stavové kódy HTTP jsou hlášeny HttpResponseMessage buď v případě HttpRequestExceptionHttpResponseMessage.StatusCodeHttpRequestException.StatusCode, že volána metoda nevrací zprávu odpovědi. Další informace o zpracování chyb naleznete v tématu Zpracování chyb HTTP a další informace o stavových kódech, viz RFC 9110, sémantika HTTP: Stavové kódy.
Informační stavové kódy
Informační stavové kódy odrážejí dočasnou odpověď. Většina dočasných odpovědí se například HttpStatusCode.Continuezpracovává interně a HttpClient nikdy se uživateli nezobrazuje.
Kód stavu HTTP | HttpStatusCode |
---|---|
100 |
HttpStatusCode.Continue |
101 |
HttpStatusCode.SwitchingProtocols |
102 |
HttpStatusCode.Processing |
103 |
HttpStatusCode.EarlyHints |
Úspěšné stavové kódy
Úspěšné stavové kódy označují, že žádost klienta byla úspěšně přijata, pochopit a přijata.
Kód stavu HTTP | HttpStatusCode |
---|---|
200 |
HttpStatusCode.OK |
201 |
HttpStatusCode.Created |
202 |
HttpStatusCode.Accepted |
203 |
HttpStatusCode.NonAuthoritativeInformation |
204 |
HttpStatusCode.NoContent |
205 |
HttpStatusCode.ResetContent |
206 |
HttpStatusCode.PartialContent |
207 |
HttpStatusCode.MultiStatus |
208 |
HttpStatusCode.AlreadyReported |
226 |
HttpStatusCode.IMUsed |
Stavové kódy přesměrování
Stavové kódy přesměrování vyžadují, aby uživatelský agent podnikl akci pro splnění požadavku. Automatické přesměrování je ve výchozím nastavení zapnuté, lze ho změnit pomocí HttpClientHandler.AllowAutoRedirect nebo SocketsHttpHandler.AllowAutoRedirect.
Kód stavu HTTP | HttpStatusCode |
---|---|
300 |
HttpStatusCode.MultipleChoices nebo HttpStatusCode.Ambiguous |
301 |
HttpStatusCode.MovedPermanently nebo HttpStatusCode.Moved |
302 |
HttpStatusCode.Found nebo HttpStatusCode.Redirect |
303 |
HttpStatusCode.SeeOther nebo HttpStatusCode.RedirectMethod |
304 |
HttpStatusCode.NotModified |
305 |
HttpStatusCode.UseProxy |
306 |
HttpStatusCode.Unused |
307 |
HttpStatusCode.TemporaryRedirect nebo HttpStatusCode.RedirectKeepVerb |
308 |
HttpStatusCode.PermanentRedirect |
Stavové kódy chyb klienta
Stavové kódy chyb klienta označují, že požadavek klienta je neplatný.
Stavové kódy chyb serveru
Stavové kódy chyb serveru označují, že server zjistil neočekávanou podmínku, která mu zabránila v plnění požadavku.