如何使用RestEasy将JSON发送到外部API?

时间:2013-08-29 20:45:49

标签: java json resteasy

我需要向https://mandrillapp.com/api/1.0//messages/send-template.json发送一个JSON正文。如何在Java中使用RestEasy执行此操作?这就是我到目前为止所做的:

ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target("https://mandrillapp.com/api/1.0//messages/send-template.json");

我如何实际发送JSON?

3 个答案:

答案 0 :(得分:1)

获得ResteasyWebTarget后,您需要获得Invocation

Invocation.Builder invocationBuilder = target.request("text/plain").header("some", "header");
Invocation incovation = invocationBuilder.buildPost(someEntity);
invocation.invoke();

其中someEntityEntity<?>的某个实例。用

创建一个
Entity<String> someEntity = Entity.entity(someJsonString, MediaType.APPLICATION_JSON);

Read this javadoc.

这是针对3.0 beta 4。

答案 1 :(得分:0)

我从未使用过此框架,但根据this url的示例,您应该能够进行如下调用:

        Client client = ClientBuilder.newBuilder().build();
        WebTarget target = client.target("http://foo.com/resource");
        Response response = target.request().get();
        String value = response.readEntity(String.class);
        response.close();  // You should close connections!

第3行似乎是你正在寻找的答案。

答案 2 :(得分:0)

这是一个有点老问题,但我发现它在Google上寻找类似的东西,所以这是我的解决方案,使用RestEasy客户端3.0.16:

我将使用Map对象发送,但您可以使用Jackson provider可以转换为JSON的任何JavaBean。

顺便说一句,你需要在resteasy-jackson2-provider lib中添加依赖项。

ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target("http://server:port/api/service1");
Map<String, Object> data = new HashMap<>();
data.put("field1", "this is a test");
data.put("num_field2", 125);
Response r = target.request().post( Entity.entity(data, MediaType.APPLICATION_JSON));
if (r.getStatus() == 200) {
    // Ok
} else {
    // Error on request
    System.err.println("Error, response: " + r.getStatus() + " - "+ r.getStatusInfo().getReasonPhrase());
}