Dokumentintroduktion:Inloggningen med hyperlänken är synlig.
När jag anropade den andra partens gränssnitt via curl upptäcktes det att timeout-fenomenet var mycket allvarligt, så jag frågade den andra partens gränssnittsperson, och den andra parten sa att det var nödvändigt att lägga till:
Efter att ha lagt till den upptäckte jag att den fungerade riktigt bra, så jag undersökte hur man använder den. När curl används för POST, när "POST-data är större än 1024 byte", kommer curl inte direkt att initiera en POST-förfrågan, utan delas in i två steg:
Expect: 100-continue
1. Skicka en förfrågan som innehåller en Expect:100-continue, där servern blir ombedd att acceptera datan
2. Efter att ha mottagit det 100-fortsättningssvar som servern returnerat, skickas datan POST:ad till servern
Men det finns flera problem med detta:
Alla servrar svarar inte korrekt på 100-continue, t.ex. lighttpd, vilket ger 417 Expectation Failed.
orsakar fördröjning,När klienten skickar den första Expect:100-continue måste den vänta på att servern svarar innan den skickar förfrågningskroppen。
Om du är säker på att den andra partens server inte kommer att avvisa POST-förfrågningar på mer än 1024 byte, kan du undvika att använda denna metod och undvika de två bieffekterna som nämnts ovan, och lösningen är den som nämns i början av artikeln.
Cirka 100 fortsätter
Syftet med detta är att:
Det låter klienten avgöra om servern är villig att ta emot förfrågningsdata innan den skickas, och om servern är villig att ta emot den, kommer klienten faktiskt att skicka datan.
Klientbeteende:
En klient som skickar 100 fortsätt bör inte vänta för evigt på svar från servern, och efter en tidsavslutning bör klienten skicka enheten direkt.
Serversidebeteende:
Om servern får en begäran om 100 fortsättning svarar den med 100 fortsätt eller skickar en felkod. Servern kan aldrig skicka 100 fortsätt till en klient som inte skickar 100 fortsättning. Men vissa servrar gör det. IIS 5 skickar felaktigt 100-fortsättningssvar
Om servern tar emot klientens kropp innan den skickar 100 fortsättningssvaret betyder det att klienten har beslutat att börja skicka data, så servern kan inte längre skicka 100 fortsätt till klienten. .NET Expect Off Expect-inställningskoden är följande:
RestSharp är uppbyggt enligt följande:
|