Как создать HTTP-запрос PUT на BlackBerry - PullRequest
1 голос
/ 13 июля 2011

Чтобы дать немного фона: Я создаю интерфейс BlackBerry для общения с внутренним веб-сервисом, созданным для поддержки только запросов PUT на множество важных ресурсов вместо запросов POST.

Этот бэкэнд работал нормально для iOS, но я не могу создать запрос PUT на BlackBerry. Просматривая API BlackBerry, я смог создать запросы GET / POST с помощью следующего кода:

HttpConnection conn = (HttpConnection) Connector.open(URL);  
conn.setRequestMethod(HttpConnection.GET);

или

conn.setRequestMethod(HttpConnection.POST);

Кажется, что класс HttpConnection должен поддерживать команду PUT, как показано в API здесь . Я попытался вручную установить conn.setRequestMethod("PUT");, но я продолжаю получать ошибку 400 от сервера.

Кто-нибудь знает, как правильно создать запрос PUT для BlackBerry? Мой поиск в Интернете пока не принес никаких полезных решений. = (Спасибо!

1 Ответ

1 голос
/ 13 июля 2011

HTTP 400 означает «Запрос не может быть понят сервером из-за неправильного синтаксиса.»Вот почему я спрашиваю: в соответствии с шаблоном веб-сервисов RESTful разница должна заключаться в том, что PUT используется для обновления ресурса на сервере, а POST - для создания ресурса на сервере.Таким образом, если ваш сетевой код работает нормально как POST, то это подтверждает, что ваш код в основном в порядке.

Еще один момент - «какие рамки / технологии используются на стороне сервера?».Это может быть важно, поскольку браузеры изначально не поддерживают PUT (только GET и POST), поэтому веб-приложения обычно имитируют PUT, помещая в веб-формы скрытое поле формы (что-то вроде «_method = PUT»).Поэтому, когда пользователь нажимает кнопку «Отправить», браузер выполняет процедуру POST, которая включает параметр «_method = PUT», поэтому сервер может распознать, что это PUT.Это используется в Rails, и я подозреваю, что другие делают что-то подобное.Если это ваш случай, попробуйте добавить ваши параметры POST в соответствии с требуемыми параметрами вашего веб-приложения (что-то вроде "_method = PUT").

...