JAXRS Rest Client
Categories:
less than a minute
Option 1 : Using interface proxy
import javax.ws.rs.FormParam;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
public class RestClient
{
public static void main(String[] args) {
final MyApiClient client = JAXRSClientFactory.create("<http://localhost:8080/api>", MyApiClient.class);
final HTTPClientPolicy clientPolicy = WebClient.getConfig(client).getHttpConduit().getClient();
clientPolicy.setConnectionTimeout(15 * 1000);
clientPolicy.setReceiveTimeout(15 * 1000);
final Response response = client.hello("your-authorization-token", "javawiki");
System.out.println("Response Status: " + response.getStatus());
}
}
@Path("/testapi") public interface MyApiClient
{
@PUT
@Path("/hello")
Response hello(@HeaderParam("AUTHORIZATION") String authorization, @FormParam("name") String name);
}
Option 2: Direct client
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.Response;
public class RestClient
{
public static void main(String[] args) {
final Client client = ClientBuilder.newClient();
client.property("http.connection.timeout", 15 * 1000); // milliseconds
client.property("http.receive.timeout", 10 * 1000); // milliseconds
final WebTarget target = client.target("http://localhost:8080/api/testapi/hello");
final Response response = target.request(MediaType.APPLICATION_JSON_TYPE)
.header("AUTHORIZATION", authorization)
.put(Entity.form(new Form().param("name", "yottabrain")));
System.out.println("Response: " + response.getStatus());
client.close();
}
}