Generic REST Service Call - Using Java and Wink API


Below is a Java REST service example for Generic Service call using Wink API.
Override methods according to the requirement.


/*************************************************************************
* REST Service Example
*
*************************************************************************/




import javax.ws.rs.core.MediaType;

import org.apache.wink.client.ClientConfig;
import org.apache.wink.client.ClientResponse;
import org.apache.wink.client.Resource;
import org.apache.wink.client.RestClient;
import org.apache.wink.client.handlers.BasicAuthSecurityHandler;


public class Test {

    public static void main(String[] args) {
       
        try {
            //1. Execute Get Service.
            Resource restClientResource =  getRestClientResource("username", "password", "serviceUrl");
            String responseData = executeGet(restClientResource);
            //Parse/Transform data.
           
           
            //2. Execute Post Service
            Resource postRestClientResource =  getRestClientResource("username", "password", "serviceUrl");
            postRestClientResource.accept(MediaType.APPLICATION_JSON);
            postRestClientResource.contentType(MediaType.APPLICATION_OCTET_STREAM);
           
            String resultData = executePost(postRestClientResource , "postData");
            //process result data.
           
           //3. Other Service calls

        } catch (Exception e) {
            //Handle Error.
            e.printStackTrace();
        }
       
    }
   

    /**
     * GET Service call.
     * @param resource
     * @return String response data
     */
    public static String executeGet(Resource resource) throws Exception{
       
        String responseResult = null;
       
        if(resource != null){
           
            try{
               
                ClientResponse response = resource.get();
               
                if(response != null){
                    responseResult = response.getEntity(String.class);   
                }else{
                    System.out.println("Rest response is NULL.");
                }
               
            }catch(Exception e){
                System.out.println("Error occured while executing GET Service." + e.getMessage());
                throw e;
            }
       
        }else{
            System.out.println("Invalid resource is NULL. Can not invoke the service.");
        }
       
        return responseResult;
    }
   

   
   
    /**
     * Executes Post service.
     *
     * @param resource
     * @throws Exception
     */
    public static String executePost(Resource resource, String postData) throws Exception {
       
        String resultData = null;
        String messageDesc = null;
       
        //validate parameters
       
        if(resource != null){
            ClientResponse clientResponse = null;
           
            try {                           
                clientResponse = resource.post(postData);

            } catch (Exception e) {
                throw e;
            }
           
            if(clientResponse != null){
                resultData = clientResponse.getEntity(String.class);
            }else{
                messageDesc = "Service response is NULL.";
            }
        }else{
            messageDesc = "Invalid resouce object.";
        }
       
        if(messageDesc != null){
            System.out.println("Throwing exception for message : "+messageDesc);
            throw new Exception(messageDesc);
        }

        return resultData;
    }

   
   
   
    /**
     * Creates REST Resource object from the Wink's ClientConfig.
     * @param userName
     * @param password
     * @param serviceUrl
     * @return Resource
     */
    public static Resource getRestClientResource(String userName, String password, String serviceUrl){
       
        Resource resource = null;
       
        //Validate parameters.
       
        try {
            ClientConfig clientCfg = new ClientConfig(); 
            //clientCfg.connectTimeout(300000);
            //clientCfg.readTimeout(300000);
           
            BasicAuthSecurityHandler basicAuthSH = null;
               
            basicAuthSH = new BasicAuthSecurityHandler(userName, password);
            //or basicAuthSH = new BasicAuthSecurityHandler();
           
            basicAuthSH.setSSLRequired(false);
           
            clientCfg.handlers(basicAuthSH);
           
            RestClient restClient = new RestClient(clientCfg);
            resource = restClient.resource(serviceUrl);
           
        } catch (Exception e) {
            System.out.println("ERROR occured while building Rest Client Resource object. " + e.getMessage());
            e.printStackTrace();
        }

        return resource;
    }

   
}














Comments

Popular posts from this blog

Generic REST Service Call - Using Java Script and DOJO