`

    import java.io.UnsupportedEncodingException;
    import java.security.InvalidKeyException;
    import java.security.NoSuchAlgorithmException;
    import java.util.HashMap;
    import java.util.Map;

    import javax.crypto.Mac;
    import javax.crypto.spec.SecretKeySpec;

    import org.apache.commons.codec.binary.Base64;
    import org.junit.Test;

    import com.sun.jersey.api.client.Client;
    import com.sun.jersey.api.client.WebResource;

    private static final String DEFAULT_ENCODING = "UTF-8";
    private static final String BASE_PATH = "https://api.hmsonline.com";

    @Test
    public void testPost() throws InvalidKeyException, NoSuchAlgorithmException, UnsupportedEncodingException {
        HashMap<String, String> params = new HashMap<String, String>();
        params.put("timestamp", "" + System.currentTimeMillis());
        params.put("key", "myKey");
        System.out.println(post("/v1/search/masterfile", "mysecret", params));
    }

    private String post(String path, String secret, Map<String, String> params) throws InvalidKeyException,
                    NoSuchAlgorithmException, UnsupportedEncodingException {
        Client c = Client.create();
        String paramString = "?";
        boolean first = true;
        for (String paramKey : params.keySet()) {
            if (first) {
                paramString = paramString + paramKey + "=" + params.get(paramKey);
                first = false;
            } else {
                paramString = paramString + "&"  + paramKey + "=" + params.get(paramKey);
            }
        }
        String context = path + paramString;
        String sig = generateSignature(secret, context);
        WebResource r = c.resource(BASE_PATH + context + "&signature=" + sig);

        System.out.println("POST: " + BASE_PATH + context + "&signature=" + sig);

        String result = r.post(String.class, "{\"match_all\":{}}");
        return result;
    }

    public static String generateSignature(String secretKey, String contentTosign) throws NoSuchAlgorithmException,
                    InvalidKeyException, UnsupportedEncodingException {
        byte[] key = Base64.decodeBase64(secretKey);
        SecretKeySpec sha1Key = new SecretKeySpec(key, "HmacSHA1");
        Mac mac = Mac.getInstance("HmacSHA1");
        mac.init(sha1Key);
        byte[] bytes = mac.doFinal(contentTosign.getBytes(DEFAULT_ENCODING));
        return Base64.encodeBase64String(bytes);
    }

`