1

有没有办法在ContentExchange对象中设置请求属性?到目前为止,我一直在做的是使用该setRequestContentSource(InputStream inputstream)方法将信息发送到请求正文中的服务器。但是,如果我想发送按字段名称分类的信息,例如、、、等,我该怎么Content办?TitleAuthor

我现在拥有的代码粘贴在下面。谢谢你的帮助!

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 对象发送的。

4

1 回答 1

1

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

但是,使用标准 POST 和表单数据,通过并使用HttpServletRequest.getParameter("Content")exchange.setRequestContentType("multipart/form-data");等获取这些值。类似于从 Web 浏览器提交 FORM 的方式。这里的好处是,您甚至可以提供一个简单的 HTML FORM 来测试我们的应用程序。

选择 #2 是以 JSON 或 XML 之类的标记发送您的数据,并让服务器对其进行解析。这具有允许分层数据的好处。

如果您对此感兴趣,我建议您阅读有关 REST 的内容,并可能深入研究诸如JerseyRestlet之类的 REST 库以及诸如JAX-RS 之类的标准。

于 2013-03-15T13:45:31.693 回答