Introducere în document:Autentificarea cu hyperlink este vizibilă.
Când am apelat interfața celeilalte părți prin curl, s-a constatat că fenomenul timeout-ului era foarte grav, așa că am întrebat persoana de interfață a celeilalte părți, iar cealaltă parte a spus că este necesar să adaugi:
După ce am adăugat-o, am descoperit că funcționează foarte bine, așa că am cercetat cum să o folosesc. Când se folosește curl pentru POST, când "datele POST sunt mai mari de 1024 bytes", curl nu va iniția direct o cerere POST, ci va fi împărțit în 2 pași:
Expect: 100-continue
1. Trimiteți o cerere care conține un Aștept:100-continue, cerând serverului să accepte datele
2. După primirea răspunsului de 100 de continue returnat de Server, datele sunt POSTate către Server
Dar există mai multe probleme cu acest lucru:
Nu toate serverele vor răspunde corect la 100-continue, de exemplu lighttpd, care va returna 417 Expectation Failed.
cauzând întârziere,Când clientul trimite primul Expect:100-continue, trebuie să aștepte răspunsul serverului înainte de a trimite corpul cererii。
Dacă sunteți sigur că serverul celeilalte părți nu va respinge cererile POST de mai mult de 1024 octeți, puteți evita această metodă și cele două efecte secundare menționate mai sus, iar soluția este cea menționată la începutul articolului.
Aproximativ 100 continuă
Scopul acesteia este:
Aceasta permite clientului să judece dacă serverul este dispus să primească datele solicitate înainte de a le trimite, iar dacă serverul este dispus să le primească, clientul va trimite efectiv datele.
Comportamentul clientului:
Un client care trimite 100 de continue nu ar trebui să aștepte la nesfârșit un răspuns de la server, iar după o perioadă de timeout, clientul ar trebui să trimită entitatea direct.
Comportamentul pe partea serverului:
Dacă serverul primește o cerere de 100 de continuare, va răspunde cu 100 de continue sau va trimite un cod de eroare. Serverul nu poate trimite niciodată 100 de continuare către un client care nu trimite 100 de continuare. Dar unele servere o fac. IIS 5 trimite greșit răspunsul 100-continue
Dacă serverul primește corpul clientului înainte de a trimite răspunsul 100 continue, înseamnă că clientul a decis să înceapă să trimită date, deci serverul nu mai poate trimite 100 continue clientului. Codul pentru setările .NET Expect Off Expect este următorul:
RestSharp este configurat astfel:
|