Введение в документ:Вход по гиперссылке виден.
При вызове интерфейса другой стороны через curl выяснилось, что тайм-аут очень серьёзно, поэтому я спросил у специалиста по интерфейсу другой стороны, и тот сказал, что необходимо добавить:
После добавления я понял, что он действительно хорошо работает, поэтому начал изучать, как им пользоваться. При использовании Curl для POST, если «данные POST превышают 1024 байта», curl не инициирует напрямую запрос POST, а будет разделен на 2 этапа:
Expect: 100-continue
1. Отправьте запрос с Expect:100-continue, с просьбой к серверу принять данные
2. После получения ответа с 100 продолжениями, вернутого сервером, данные отправляются в POST на сервер
Но с этим есть несколько проблем:
Не все серверы корректно реагируют на 100-continue, например, lighttpd, который возвращает 417 Ожидание не выполнено.
вызывая задержку,Когда клиент отправляет первое сообщение Expect:100-continue, ему нужно дождаться ответа сервера, прежде чем отправлять тело запроса。
Если вы уверены, что сервер другой стороны не отклонит POST-запросы объемом более 1024 байт, вы можете избежать этого метода и двух упомянутых побочных эффектов, а решение — тот, что описано в начале статьи.
Около 100 продолжают
Цель этого — чтобы:
Это позволяет клиенту оценить, готов ли сервер принять данные запроса до отправки, и если сервер готов их принять, клиент действительно отправит данные.
Поведение клиентов:
Клиент, отправивший 100 продолжить, не должен ждать ответа от сервера бесконечно, а после определённого тайм-аута клиент должен отправить сущность напрямую.
Поведение на стороне сервера:
Если сервер получает запрос 100 продолжать, он отвечает 100 продолжать или отправляет код ошибки. Сервер никогда не может отправить 100 продолжить клиенту, который не отправляет 100 продолжить. Но некоторые серверы это делают. IIS 5 ошибочно отправляет ответ со 100 продолжением
Если сервер получает тело клиента до отправки ответа 100 продолжать, это означает, что клиент решил начать отправку данных, и сервер больше не может отправлять 100 продолжить клиенту. Код настройки .NET Expect Off Expect следующий:
RestSharp устроен следующим образом:
|