Úvod do dokumentu:Přihlášení k hypertextovému odkazu je viditelné.
Když jsem volal rozhraní druhé strany přes curl, zjistilo se, že fenomén timeoutu je velmi vážný, takže jsem se zeptal uživatele rozhraní druhé strany a druhá strana řekla, že je nutné dodát:
Po přidání jsem zjistil, že to opravdu dobře funguje, tak jsem si začal zjišťovat, jak ho používat. Při použití curlu pro POST, když "POST data jsou větší než 1024 bajtů", curl přímo nezahajuje POST požadavek, ale bude rozdělen do 2 kroků:
Expect: 100-continue
1. Odeslat požadavek obsahující Expect:100-continue, žádající server o přijetí dat
2. Po obdržení odpovědi 100-pokračování vrácené serverem jsou data POSTována na server
Ale s tím je několik problémů:
Ne všechny servery správně odpoví na 100-continue, např. lighttpd, který vrátí 417 Expectation Failed.
způsobující zpoždění,Když klient odešle první Expect:100-continue, musí počkat, až server odpoví, než odešle tělo požadavku。
Pokud si jste jisti, že server druhé strany neodmítne POST požadavky větší než 1024 bajtů, můžete se této metodě vyhnout a vyhnout se dvěma výše zmíněným vedlejším účinkům, a řešením je to zmíněné na začátku článku.
Přibližně 100 pokračuje
Účelem tohoto je:
Umožňuje klientovi posoudit, zda je server ochoten data požadavku přijmout, než je odešle, a pokud je server ochoten je přijmout, klient data skutečně odešle.
Chování klienta:
Klient, který odešle 100 pokračovat, by neměl čekat věčně na odpověď ze serveru, a po uplynutí doby by měl klient poslat entitu přímo.
Chování na straně serveru:
Pokud server obdrží požadavek 100 pokračovat, odpoví 100 pokračováním nebo pošle chybový kód. Server nikdy nemůže poslat 100 pokračování klientovi, který neodešle 100 pokračování. Ale některé servery ano. IIS 5 nesprávně odesílá odpověď 100-pokračování
Pokud server obdrží tělo klienta před odesláním odpovědi 100 pokračovat, znamená to, že klient se rozhodl začít odesílat data, takže server již nemůže posílat 100 pokračování klientovi. Kód nastavení .NET Expect Off Expect je následující:
RestSharp je nastaven následovně:
|