有没有办法在ContentExchange
对象中设置请求属性?到目前为止,我一直在使用setRequestContentSource(InputStream inputstream)
方法将信息发送到请求正文中的服务器。但是,如果我想发送按字段名称分类的信息,例如Content
,Title
,Author
等,我该怎么办?
我现在的代码粘贴在下面。谢谢你的帮助!
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 :(得分:1)
啊,所以ServletRequest属性不是HTTP协议的一部分。 没有通过HTTP协议发送这些属性的标准方法。 实际上,servlet规范本身限制了它对特定于应用程序的信息的使用(例如将信息从过滤器传递到servlet)和SSL证书相关信息。
但是,使用standard POST and form data,通过exchange.setRequestContentType("multipart/form-data");
并使用HttpServletRequest.getParameter("Content")等获取这些值。类似于从网络浏览器提交FORM的方式。这里的好处是,您甚至可以提供一个简单的HTML表单来测试我们的应用程序。
选择#2是以JSON或XML等标记发送数据,让服务器解析它。 这具有允许分层数据的益处。
如果您对此感兴趣,我建议您阅读有关REST的信息,也可以深入研究一下REST库,如Jersey,Restlet和JAX-RS等标准。