2013-03-14 6 views
1

Есть ли способ установить атрибуты запроса в объекте ContentExchange? То, что я делал до сих пор, - это отправить информацию на сервер в тело запроса с помощью метода setRequestContentSource(InputStream inputstream). Но что мне делать, если я хочу отправить информацию, разделенную по именам полей, например, Content, Title, Author и т. Д.?Установить атрибуты запроса с ContentExchange

Код, который у меня на данный момент, вставлен ниже. Спасибо за вашу помощь!

exchange.setRequestContentSource(new ByteArrayInputStream(
    serialized.getBytes("UTF-8"))); 

exchange.setRequestContentType("text/html"); 
exchange.setMethod("POST"); 
exchange.setURL(("http://localhost:8089/")); 
client.send(exchange); 

Чтобы быть более точным, по атрибуты запроса, я имею в виду нечто эквивалентное request.setAttribute ("Name", "ABC"). Только в этом случае запрос отправляется через объект ContentExchange.

+0

Конкретно, что вы имеете в виду, когда говорите «установить атрибуты запроса»? –

+0

Извините. Я имею в виду нечто эквивалентное запросу.setAttribute («Имя», «ABC»). Только в этом случае запрос отправляется через объект ContentExchange. Я также добавил эту информацию в вопрос, спасибо! – user2171246

ответ

1

Ах, поэтому атрибуты ServletRequest не являются частью протокола HTTP. Нет стандартного способа отправки этих атрибутов по протоколу HTTP. Фактически, сама спецификация сервлета ограничивает ее использование для информации, специфичной для приложения (например, передачи информации от фильтра сервлету) и информации, связанной с сертификатом SSL.

Однако, используя standard POST and form data, через exchange.setRequestContentType("multipart/form-data"); и получите эти значения с помощью HttpServletRequest.getParameter("Content") и т. Д., Аналогично тому, как форма FORM отправляется из веб-браузера. Преимущество здесь заключается в том, что вы даже можете предоставить простой HTML FORM, чтобы проверить наше приложение.

Выбор №2 - отправить ваши данные в разметку, например JSON или XML, и проанализировать ее на сервере. Это позволяет использовать иерархические данные.

Если вас интересует, я рекомендую вам прочитать о REST и, возможно, копаться в библиотеке REST как Jersey, Restlet, и стандарты, такие как JAX-RS.

+0

Не могли бы вы немного понять, как это сделать, используя стандартные POST и данные формы, или указать мне на ресурс/учебник, который показывает, как? Благодаря! – user2171246

+0

Вам нужно будет форматировать строку 'serialized' с' URLEncoder.encode() ', аналогично другим вопросам о сообщении http form с java на stackoverflow. http://stackoverflow.com/a/9954851/775715 –

Смежные вопросы