Úvod do dokumentu:Prihlásenie na hypertextový odkaz je viditeľné.
Keď som volal rozhranie druhej strany cez curl, zistilo sa, že fenomén timeoutu je veľmi vážny, tak som sa opýtal rozhrania druhej strany a druhá strana povedala, že je potrebné dodať:
Po pridaní som zistil, že to naozaj dobre funguje, tak som si začal naštudovať, ako ho používať. Pri použití curlu pre POST, keď "POST dáta sú väčšie ako 1024 bajtov", curl priamo neiniciuje POST požiadavku, ale bude rozdelený do 2 krokov:
Expect: 100-continue
1. Oslať požiadavku obsahujúcu Expect:100-continue, žiadajúc server, aby prijal dáta
2. Po prijatí odpovede 100 pokračovania od servera sú dáta POSTované na server
Ale je tu niekoľko problémov:
Nie všetky servery správne reagujú na 100-continue, napríklad lighttpd, ktorý vráti 417 Expectation Failed.
spôsobujúc oneskorenie,Keď klient odošle prvý Expect:100-continue, musí počkať na odpoveď servera pred odoslaním tela požiadavky。
Ak ste si istí, že server druhej strany neodmietne POST požiadavky s veľkosťou nad 1024 bajtov, môžete sa tejto metóde vyhnúť a vyhnúť sa dvom vedľajším účinkom spomenutým vyššie, pričom riešením je to uvedené na začiatku článku.
Približne 100 pokračuje
Účelom je:
Umožňuje klientovi posúdiť, či je server ochotný prijať požiadavky pred ich odoslaním, a ak je server ochotný ich prijať, klient ich skutočne odošle.
Správanie klienta:
Klient, ktorý pošle 100 pokračovania, by nemal čakať donekonečna na odpoveď zo servera a po určitom časovom limite by mal klient poslať entitu priamo.
Správanie na strane servera:
Ak server dostane požiadavku 100 pokračovať, odpovie 100 pokračovať alebo pošle chybový kód. Server nikdy nemôže poslať 100 pokračovať klientovi, ktorý neposiela 100 pokračovania. Ale niektoré servery áno. IIS 5 nesprávne odosiela 100-pokračovaciu odpoveď
Ak server prijme telo klienta pred odoslaním odpovede 100 pokračovať, znamená to, že klient sa rozhodol začať odosielať dáta, takže server už nemôže posielať 100 pokračovania klientovi. Kód nastavenia .NET Expect Off Expect je nasledovný:
RestSharp je nastavený nasledovne:
|