Dokumentum bevezetése:A hiperlink bejelentkezés látható.
Amikor a másik fél felületét curl-en hívtuk, kiderült, hogy az időkorlát jelensége nagyon súlyos, ezért megkérdeztem a másik fél interfészének személyét, aki azt mondta, hogy szükséges hozzátenni:
Miután hozzáadtam, rájöttem, hogy nagyon jól működik, ezért utánanéztem, hogyan kell használni. A curl használata esetén a POST-hoz, ha "POST adat nagyobb, mint 1024 bájt", a curl nem indít közvetlenül POST kérést, hanem két lépésre oszlik:
Expect: 100-continue
1. Küldj egy kérést, amely tartalmaz egy Expect:100-continue-t, és kérd meg a szervert, hogy fogadja el az adatokat
2. Miután megkapta a szerver által visszaküldött 100-as válaszot, az adatokat POST-elé a szerverre
De ezzel több probléma is van:
Nem minden szerver fog helyesen válaszolni a 100-folytatásra, például lighttpd, amely 417 Expectation Failed értéket ad vissza.
késést okozva,Amikor az ügyfél elküldi az első Expect:100-continue-t, várnia kell, hogy a szerver válaszoljon, mielőtt elküldi a kérvény testét。
Ha biztos vagy benne, hogy a másik fél szervere nem utasítja el a 1024 bájtnál nagyobb POST kéréseket, elkerülheted ezt a módszert, és elkerülheted a fent említett két mellékhatást, és a megoldás az, amit a cikk elején említettek.
Körülbelül 100 folytatás
Ennek célja:
Ez lehetővé teszi a kliens számára, hogy eldöntse, hajlandó-e a szerver megfogadni a kérés adatait, mielőtt elküldené, és ha a szerver hajlandó elfogadni, akkor az ügyfél ténylegesen elküldi az adatokat.
Ügyfél viselkedése:
Egy kliensnek, amely 100 folytatást küld, nem várhat örökké a szerver válaszára, és egy időkorlát után az ügyfélnek közvetlenül el kell küldenie az entitást.
Szerveroldali viselkedés:
Ha a szerver 100 folytatási kérést kap, akkor 100 folytatást küld vagy hibakódot küld. A szerver soha nem tud 100 folytatást küldeni egy olyan kliensnek, amely nem küld 100 folytatást. De néhány szerver igen. IIS 5 hibásan küld 100-as folytatási választ
Ha a szerver megkapja az ügyfél testét a 100 folytatás előtt, az azt jelenti, hogy az ügyfél úgy döntött, hogy elkezdi az adatokat küldeni, így a szerver már nem tud 100 folytatást küldeni a kliensnek. A .NET Expect Off Expect beállítási kód a következő:
A RestSharp a következőképpen van felépítve:
|