Dokumento įvadas:Hipersaito prisijungimas matomas.
Skambinant kitos šalies sąsajai per curl, buvo nustatyta, kad skirtojo laiko reiškinys buvo labai rimtas, todėl paklausiau kitos šalies sąsajos asmens, o kita šalis pasakė, kad reikia pridėti:
Pridėjęs pastebėjau, kad jis tikrai gerai veikė, todėl tyrinėjau, kaip jį naudoti. Naudojant curl POST, kai "POST duomenys yra didesni nei 1024 baitai", curl tiesiogiai neinicijuos POST užklausos, bet bus padalintas į 2 veiksmus:
Expect: 100-continue
1. Išsiųskite užklausą su Expect:100-continue, prašydami serverio priimti duomenis
2. Gavus serverio grąžintą 100 tęsinių atsakymą, duomenys perduodami serveriui
Tačiau yra keletas problemų:
Ne visi serveriai teisingai atsakys į 100-continue, pvz., lighttpd, kuris grąžins 417 Expectation Failed.
dėl to vėluojama,Kai klientas siunčia pirmąjį Expect:100-continue, prieš siųsdamas užklausos turinį jis turi palaukti, kol serveris atsakys。
Jei esate tikri, kad kitos šalies serveris neatmes daugiau nei 1024 baitų POST užklausų, galite išvengti šio metodo naudojimo ir išvengti dviejų aukščiau paminėtų šalutinių poveikių, o sprendimas yra tas, kuris paminėtas straipsnio pradžioje.
Apie 100 tęsti
To tikslas yra:
Tai leidžia klientui nuspręsti, ar serveris nori gauti užklausos duomenis prieš juos siunčiant, o jei serveris nori juos gauti, klientas iš tikrųjų išsiųs duomenis.
Kliento elgesys:
Klientas, siunčiantis 100 tęsinių, neturėtų amžinai laukti atsakymo iš serverio, o pasibaigus skirtajam laikui klientas turėtų siųsti objektą tiesiogiai.
Veikimas serveryje:
Jei serveris gauna 100 tęsti užklausą, jis atsakys 100 tęsti arba atsiųs klaidos kodą. Serveris niekada negali siųsti 100 tęsti klientui, kuris nesiunčia 100 tęsti. Tačiau kai kurie serveriai tai daro. IIS 5 neteisingai siunčia 100 tęsinių atsakymą
Jei serveris gauna kliento kūną prieš siųsdamas 100 tęsti atsakymą, tai reiškia, kad klientas nusprendė pradėti siųsti duomenis, todėl serveris nebegali siųsti 100 tęsti klientui. .NET Expect Off Expect nustatymo kodas yra toks:
"RestSharp" nustatyta taip:
|