Using a modification of the service defined by @nullpointer:
@Path("/testpostjson")
public class MyPostResource {
public MyPostResource() {
}
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response newPost(InputPOJO inputPOJO) {
String output = "Success! " + inputPOJO.getVersion() +" "+ inputPOJO.getBuildTime();
return Response.status(200).entity(output).build();
}
}
I created this client you can use:
@Produces(MediaType.TEXT_PLAIN)
@Path("/client")
public class Client2Post {
private Client client;
public Client2Post(Client client) {
this.client = client;
}
@Path("/test")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public String newPost(){
String input = "{\"version\":\"v1\",\"buildTime\":\"2017-06-06\"}";
//call external api with json_input
final Invocation.Builder request = client.target("http://localhost:8080/testpostjson").request();
final Response result = request.post(Entity.entity(input, MediaType.APPLICATION_JSON_TYPE));
return result.readEntity(String.class);
}
}
Also remember to configure the jersey client in your Configuration file:
@Valid
@NotNull
private JerseyClientConfiguration jerseyClient = new JerseyClientConfiguration();
@JsonProperty("jerseyClient")
public JerseyClientConfiguration getJerseyClientConfiguration() {
return jerseyClient;
}
And register the created resources in your Application file.