2013-03-14 133 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

更具体一点,当你说“设置请求属性”时,你是什么意思? – 2013-03-14 19:35:39

+0

对不起。我的意思是相当于request.setAttribute(“Name”,“ABC”)。只有在这种情况下,才会通过ContentExchange对象发送请求。 我也在问题中添加了这些信息,谢谢! – user2171246 2013-03-14 19:51:01

回答

1

啊,所以ServletRequest属性不是HTTP协议的一部分。 没有通过HTTP协议发送这些属性的标准方式。实际上,servlet规范本身限制了它用于特定于应用程序的信息(例如将信息从过滤器传递给servlet)以及SSL证书相关信息。

但是,使用standard POST and form data,通过exchange.setRequestContentType("multipart/form-data");并使用HttpServletRequest.getParameter("Content")等获得这些值,类似于如何从Web浏览器提交FORM。在这里受益,你甚至可以提供一个简单的HTML FORM来测试我们的应用程序。

选择#2将以类似于JSON或XML的标记发送数据,并让服务器解析它。 这有利于允许分层数据。

如果您对此有兴趣,我建议你阅读的休息,也许挖为REST库像JerseyRestlet,像JAX-RS标准。

+0

能否请您更清楚地说明如何使用标准POST和表单数据来做到这一点,或者将我指向一个资源/教程来展示它如何实现?谢谢! – user2171246 2013-03-15 18:33:12

+0

您需要使用'URLEncoder.encode()'格式化'serialized'字符串,类似于其他关于在stackoverflow上使用java进行http表单发布的问题。 http://stackoverflow.com/a/9954851/775715 – 2013-03-15 20:35:13