Wprowadzenie do dokumentu:Logowanie do linku jest widoczne.
Podczas wywoływania interfejsu drugiej strony przez curl okazało się, że zjawisko timeoutu jest bardzo poważne, więc zapytałem osobę od interfejsu drugiej strony, a druga strona powiedziała, że trzeba dodać:
Po dodaniu odkryłem, że naprawdę dobrze działa, więc zacząłem badać sposób, w jaki go używać. Używając curl dla POST, gdy "dane POST są większe niż 1024 bajty", curl nie inicjuje bezpośrednio żądania POST, lecz jest podzielony na 2 kroki:
Expect: 100-continue
1. Wysłać żądanie zawierające kontynuację Expect:100, prosząc serwer o zaakceptowanie danych
2. Po otrzymaniu odpowiedzi 100-continue zwróconej przez Serwer, dane są POSTowane na Serwerze
Ale jest z tym kilka problemów:
Nie wszystkie serwery poprawnie reagują na 100-continue, np. lighttpd, który zwraca 417 Expectation Failed.
powodujące opóźnienie,Gdy klient wysyła pierwsze Expect:100-continue, musi poczekać na odpowiedź serwera, zanim wyśle ciało żądania。
Jeśli jesteś pewien, że serwer drugiej strony nie odrzuci żądań POST o objętości większej niż 1024 bajty, możesz uniknąć tej metody i uniknąć dwóch wspomnianych wcześniej skutków ubocznych, a rozwiązaniem jest to wspomniane na początku artykułu.
Około 100 sztuk nadal
Celem tego jest:
Pozwala klientowi ocenić, czy serwer jest gotów przyjąć dane żądania przed ich wysłaniem, a jeśli serwer jest gotów je przyjąć, klient faktycznie je wyśle.
Zachowanie klienta:
Klient, który wysyła 100 kontynuacji, nie powinien czekać wiecznie na odpowiedź od serwera, a po pewnym czasie klient powinien wysłać jednostkę bezpośrednio.
Zachowanie po stronie serwera:
Jeśli serwer otrzyma żądanie 100 kontynuacji, odpowie 100 kontynuacją lub wyśle kod błędu. Serwer nigdy nie może wysłać 100 kontynuacji do klienta, który nie wysyła 100 kontynuacji. Ale niektóre serwery tak. IIS 5 błędnie wysyła odpowiedź 100-kontynuuj
Jeśli serwer otrzyma ciało klienta przed wysłaniem odpowiedzi 100 kontynuuj, oznacza to, że klient zdecydował się rozpocząć wysyłanie danych, więc serwer nie może już wysłać 100 kontynuacji do klienta. Kod ustawień .NET Expect Off Expect wygląda następująco:
RestSharp jest skonfigurowany następująco:
|