1

我需要将 JSON 正文发送到https://mandrillapp.com/api/1.0//messages/send-template.json。如何在 Java 中使用 RestEasy 来做到这一点?这是我到目前为止所拥有的:

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

我如何实际发送 JSON?

4

3 回答 3

2

一旦你有了ResteasyWebTarget,你需要得到Invocation

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

someEntity的一些实例在哪里Entity<?>。创建一个

Entity<String> someEntity = Entity.entity(someJsonString, MediaType.APPLICATION_JSON);

阅读这个 javadoc。

这是针对 3.0 beta 4 的。

于 2013-08-29T20:53:43.287 回答
1

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

我将使用要发送的 Map 对象,但您可以使用 Jackson 提供程序可以转换为 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());
}
于 2016-05-12T11:18:19.397 回答
0

我从来没有使用过这个框架,但是根据这个 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 行似乎是您正在寻找的答案。

于 2013-08-29T20:53:51.723 回答