Обработка сбоев при использовании Expect: 100-Continue с HttpClient

Я заинтересован в оптимизации поведения клиента, вызывающего REST API. В этом API конкретная операция POST позволяет включить If-None-Match: * заголовок, который заставляет сервер сообщать ответ HTTP 412, если загружаемый элемент уже существует в системе. При использовании с Expect: 100-continue сервер ответит 412 вместо отправки ответа 100, как описано в RFC 2616 §8.2.3. Я хотел бы обнаружить это состояние в клиенте и избежать передачи тела запроса в этом случае.

При работе напрямую с HttpWebRequest это довольно просто реализовать. После звонка GetRequestStream (или же GetRequestStreamAsync), но перед записью данных в результирующий Stream, код просто должен проверить HaveResponse имущество. Если значение true закройте поток запросов и продолжайте звонить GetResponseAsync,

Сейчас я работаю над переходом на использование HttpClient вместо того, чтобы работать с HttpWebRequest напрямую (для улучшенной поддержки на нескольких платформах). В настоящее время я использую StreamContent представлять тело запроса и наблюдать, что содержимое потока отправляется независимо от того, отправил ли сервер ответ 100 или 412. Как выполнить оптимизацию, аналогичную описанной выше, используя HttpClient а также HttpRequestMessage вместо HttpWebRequest?

0 ответов

Другие вопросы по тегам