Note: that this API is currently experimental and not supported by Cxense. A fully supported version might be released in the future.
The Cxense Java SDK enables Java developers to easily work with the Cxense APIs. You can get started in minutes using Maven or by downloading a single zip file.
Before you begin, you need a Cxense account. Please see the Cxense homepage for information about how to create a Cxense account and retrieve your Cxense credentials.
<dependencies>
<dependency>
<groupId>com.cxense.sdk</groupId>
<artifactId>cx-java-sdk</artifactId>
<version>1.0.3</version>
</dependency>
</dependencies>
Download the single zip file and add the .jar file to the classpath.
Check out the code from GitHub and build it using Maven.
mvn clean package
import com.cxense.sdk.Cxense;
public class SDKSample1 {
public static void main(String[] args) throws Exception {
//Cxense.pageViewEvent(<site ID>, <page url>, <end user ID>).send();
Cxense.pageViewEvent("1234", "http://www.site.com/", "abcd").send();
}
}
import com.cxense.sdk.Cxense;
public class SDKSample2 {
public static void main(String[] args) throws Exception {
//Cxense.pageViewEvent(<site ID>, <page url>, <end user ID>);
Cxense.pageViewEvent("1234", "http://www.site.com/", "abcd")
.setReferrer("http://www.siteb.com/")
.setScreenSize(1024, 768)
.setWindowSize(927, 349)
.setDevicePixelRatio(1.4)
.setGeoPosition(7.6145, 110.7122)
.addCustomParameter("section", "sports")
.addExternalUserId("fbk", "ABCD") // Add FaceBook user ID
.send();
}
}
For custom parameters and external IDs, you can provide a map of values instead of individual values:
import com.cxense.sdk.Cxense;
public class SDKSample3 {
public static void main(String[] args) throws Exception {
Map<String, String> customParameters = new HashMap<String, String>() {{
put("a", "1");
put("b", "2");
put("c", "3");
}};
Map<String, String> externalUserIds = new HashMap<String, String>() {{
put("fbk", "1234");
put("slk", "ABCD");
}};
//Cxense.pageViewEvent(<site ID>, <page url>, <end user ID>);
Cxense.pageViewEvent("1234", "http://www.site.com/", "abcd")
.addCustomParameters(customParameters)
.addExternalUserIds(externalUserIds)
.send();
}
}
A generic API request sending the request as a JSON string and getting the response back as a JSON string
import com.cxense.sdk.Cxense;
public class SDKSample4 {
public static void main(String[] args) throws Exception {
Cxense cx = new Cxense("<username (email)>", "<api key>");
String apiPath = "/site";
String request = "{}";
String response = cx.apiRequest(apiPath, request);
}
}
A generic API request sending the request as a JSON object and getting the response back as a JSON object
import com.cxense.sdk.Cxense;
import javax.json.Json;
import javax.json.JsonObject;
public class SDKSample5 {
public static void main(String[] args) throws Exception {
Cxense cx = new Cxense("<username (email)>", "<api key>");
String apiPath = "/site";
JsonObject requestObject = Json.createObjectBuilder().build();
JsonObject responseObject = cx.apiRequest(apiPath, requestObject);
}
}
A persisted query can be setup that require no authentication. Only the persisted query ID need to be supplied.
import com.cxense.sdk.Cxense;
public class SDKSample6 {
public static void main(String[] args) throws Exception {
Cxense cx = new Cxense();
String apiPath = "/site";
String request = "{}";
String persistedQueryId = "<persisted query id>";
String response = cx.apiRequest(apiPath, request, persistedQueryId);
}
}
If you want to use a custom HTTP client, there is a helper method that will build the required authentication headers for you. Here is an example using Java's URLConnection:
import com.cxense.sdk.Cxense;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
public class SDKSample7 {
public static void main(String[] args) throws Exception {
String username = "<username (email)>";
String apiKey = "<api key>";
String apiBaseUrl = "https://api.cxense.com";
String apiPath = "/site";
String jsonStringQuery = "{}";
String encodedJsonQuery = URLEncoder.encode(jsonStringQuery, "UTF-8");
URLConnection connection = new URL(apiBaseUrl + apiPath + "?json=" + encodedJsonQuery).openConnection();
connection.setRequestProperty("X-cXense-Authentication", Cxense.getHttpAuthenticationHeader(username, apiKey));
connection.connect();
String jsonResponse = new BufferedReader(new InputStreamReader(connection.getInputStream())).readLine();
}
}