1

我正在成功地创建一个简单类型的简单 RESTful Web 服务。现在我想传递一个对象作为 Web 服务的参数并获取该对象作为响应。我的场景是,使用 Jaxb 将 XML 消息解析为对象,并将对象作为 Web 服务请求发送。之后在服务器端处理请求的对象并生成响应 xml 文件并将其作为对象发送回。

在我给出的 URL 路径中

 "http://localhost:8080/SampleWS/rest/checkXML/username=visolve&password=visolve" 

对于简单类型。但在对象中,我不知道如何在 URL 中给出对象引用。请帮助我如何解决我的问题..

Regards

巴塔卡拉伊

4

2 回答 2

2

只需定义一个非常好看的域对象。JAXB 和 JAX-RS 将完成其余的工作。

JAXB。

@XmlRootElement
class Regards {

    @XmlElement
    private long sincerely;
}

JAX-RS。

@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@POST
@Path("/sincerely")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response sincerely(final Regards regards) {

    regards.setSincerely(System.currentTimeMillis());

    return Response.ok(regards).build();
}
于 2012-08-02T13:19:10.663 回答
1

虽然您当然可以在您的 URL 中包含整个 XML 内容,但我可能会回避它。

可以这样想:如果您在 URL 中编码 XML,您可能会在两端添加更多工作。现在服务器和客户端都需要知道如何正确构建 URL,并检查以确保所有内容都正确排列。如果将来您需要提供相同内容的 JSON 或 YAML 视图怎么办?现在您的 URL 可能还需要包含内容类型。字符编码呢?

综上所述,HTTP 提供了一种极好的传输机制,已经解决了这些问题。将 XML 包含为HTTP 消息的实体主体,并使用 HTTP 标头来识别您要发送的内容类型、字符编码等。这将双向工作(服务器和客户端都可以将 XML 发送回/forth),并更好地利用 HTTP。

这是一个相关链接,可能有助于了解一些细节。还有一个

顺便说一句,拜托,拜托,告诉我您不打算通过未加密的链接以纯文本形式发送用户凭据。

于 2012-07-21T15:13:00.863 回答