使用RESTful Web服务将JSON对象作为请求体传递

时间:2014-07-02 15:38:58

标签: java json spring web-services rest

我已经定义了 RESTful WebService (在 JBoss AS 7 上使用 RESTEasy ),它消耗了 JSON 数据流。

@PUT
@Path("/send")
@Consumes(MediaType.APPLICATION_JSON)
public Response consumeJSON(Student student) {
    String output = student.toString();
    // Do something...
    return Response.status(200).entity(output).build();
}

如何通过正确使用RestTemplate,将Java Object映射到JSON并将其作为请求体传递,从另一个基于 Spring 的Web应用程序调用我的WS?


注意:我问Spring是为了调查框架提供的设施。我很清楚,通过手动定义请求体,可以做到这一点。

干杯,V。

1 个答案:

答案 0 :(得分:0)

在客户端应用程序中,您可以创建一个与您在服务器端公开的签名具有相同签名的接口,并使用相同的路径。 然后,在spring配置文件中,您可以使用RESTeasy客户端API生成连接到公开的Web服务的代理。

在客户端应用程序中,它看起来像这样:

<强> SimpleClient.java

@PUT
@Path("/send")
@Consumes(MediaType.APPLICATION_JSON)
public Response consumeJSON(Student student);

<强> Config.java

@Bean
public SimpleClient getSimpleClient(){
    Client client = ClientFactory.newClient();
    WebTarget target = client.target("http://example.com/base/uri");
    ResteasyWebTarget rtarget = (ResteasyWebTarget)target;

    SimpleClient simple = rtarget.proxy(SimpleClient.class);

    return simple;
}

然后,在您要调用此Web服务的位置,使用Spring注入它,然后可以调用该方法。 RESTeasy将搜索与您的客户端匹配的Web服务(根据路径和请求类型)并创建连接。

<强> Launcher.java

@Resource
private SimpleClient simpleClient;

public void sendMessage(Student student) {
    simpleClient.consumeJSON(student);
}

RESTesay客户端API上的文档:http://docs.jboss.org/resteasy/docs/3.0.7.Final/userguide/html/RESTEasy_Client_Framework.html

希望这有用。