2013-08-29 44 views

回答

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版本

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行似乎是你正在寻找的答案。

+0

谢谢。我多次去过那个网站,但我更感兴趣的是通过POST发送信息,而不是我在回复中。 – user1325194

+0

这是*发送。你需要的唯一区别是它调用'request()。get()'而不是'request()。buildPost(...)'。 'buildPost'的javadoc在这里:http://docs.jboss.org/resteasy/docs/3.0-beta-1/javadocs/javax/ws/rs/client/Invocation.Builder.html#buildPost(javax.ws .rs.client.Entity) –

0

这是一个有点老问题,但我发现它在寻找在谷歌类似的东西,所以这是我的解决方案,使用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()); 
}