RestTemplate, метод PUT и Expect: 100-CONTINUE - PullRequest
2 голосов
/ 09 июля 2011

Я новичок в пересчете шаблонов и о том, как он поддерживается классами Apache http. Поэтому сначала я подумал, что все, что мне нужно сделать, это вручную создать заголовки http с Expect: 100 Continue, чтобы начать реализацию метода PUT с использованием этой функции. В моем случае сервер, с которым у меня был диалог, ответил правильно, но мое приложение никогда не видело ответ 100-Continue, потому что 100-Continue игнорируется, как показано ниже: [org.apache.commons.httpclient.HttpMethodBase] - <' Отказ от неожиданного ответа: HTTP / 1.1 100 Продолжить>. Wireshark подтверждает, что я получил 100 Продолжить.

Теперь, после некоторого чтения, я понимаю, что где-то я должен установить поведение метода PUT по умолчанию для использования заголовка Expect: 100-Continue ... и я начинаю думать, что его нет ни в одном из классов, созданных Springsource. Насколько я могу судить, соответствующий абстрактный класс Apache: org.apache.commons.httpclient.methods.ExpectContinueMethod, у которого есть подкласс org.apache.commons.httpclient.methods.PutMethod, и в любом случае имеет метод установки для используя Expect: 100-CONTINUE во всех запросах PUT.

Так что это приводит к 2 вопросам сейчас, а теперь 1.

Как я могу установить эту функцию, чтобы я мог использовать 100-CONTINUE в моих диалогах с серверами? Я искал в документации Springsource, и я вижу, где установлены HttpClientParams и как для CommonsClientHttpRequestFactory, но я не знаю, где и как установить использование ExpectContinueMethod, когда resttemplate действует на запрос PUT. Я начинаю думать, что это невозможно изнутри какого-либо класса или пакета Springsource ... У меня такое ощущение, что шаблон повторной установки слишком высок, так сказать.

Возможно, мне придется импортировать многие пакеты Apache просто для того, чтобы создать их экземпляр и указать использование функции ExpectContinue, и каким-то образом убедиться, что resttemplate и другие классы Springsource используют их (если это вообще возможно или имеет смысл). Сегодня это над моей головой, но у меня есть смутное представление о том, что нужно сделать. Даже если это правда, означает ли это, что для любого приложения я должен выбрать либо использовать заголовок 100-Continue для всех запросов PUT навсегда? Я не могу использовать некоторые запросы PUT и другие, не зависящие, скажем, от размера тела? Это было бы ужасно.

Был бы признателен даже указатель в правильном направлении.

-Поль

...