Properties File
Navigate to Setup->Develop->Remote Access to create a new consumerkey and consumersecret when you create a new Remote Access to Salesforce
username=username@email.com password=passwordsecuritytoken client.id=consumerkey client.secret=consumersecret login.url=https://login.salesforce.com merchandise.name=Target merchandise.price=6.25 merchandise.description=Retail Store merchandise.inventory=200
Java File to Add a new Merchandize Record to Salesforce
package com.thysmichels;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;
public class AddMerchandise {
public static void main(String [] args){
Properties props = new Properties();
try {
//Load Properties File
props.load(new FileInputStream("AddMerchandise.properties"));
//Assign username and password to variables
String username = props.getProperty("username");
String password = props.getProperty("password");
//Check if username and password has values
if (username == null || username.trim().equals("") ||
password == null || password.trim().equals("")){
throw new IllegalArgumentException("Please provide a username and password in the properties file");
}
//Get clientId and clientSecret and check if they have values assigned
String clientId = props.getProperty("client.id");
String clientSecret = props.getProperty("client.secret");
if (clientId == null || clientId.trim().equals("") ||
clientSecret == null || clientSecret.trim().equals("")){
throw new IllegalArgumentException("Please provide a valid client id and client secret in the properties file");
}
String loginURL = props.getProperty("login.url");
String name = props.getProperty("merchandise.name");
String price = props.getProperty("merchandise.price");
String desc = props.getProperty("merchandise.description");
String inventory = props.getProperty("merchandise.inventory");
//Login to Salesforce using:username + password + clientid + clientSecret and loginURL
ForceLogin login = login2ForceDotCom(username, password,
clientId, clientSecret,
loginURL);
if (login != null){
//add Merchandise record
String merchId = addMerchandise(login, name, price, desc, inventory);
if (merchId != null){
System.out.println("Merchandise record created successfully. Id="+merchId);
}
}
}
catch(IOException e){
e.printStackTrace();
}
}
private static ForceLogin login2ForceDotCom(String uName,
String pwd,
String id,
String secret,
String url){
String postURL = (url==null || url.equals(""))?"https://login.salesforce.com":url;
//Login to Salesforce REST interface
postURL+="/services/oauth2/token?grant_type=password&client_id="+id+"&client_secret="+secret+"&username="+uName+"&password="+pwd;
//Assign new http client and post the REST URI
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost(postURL);
try {
HttpResponse response = httpclient.execute(post);
final int statusCode = response.getStatusLine().getStatusCode();
//Check of statusCode is OK else throw error
if (statusCode != HttpStatus.SC_OK) {
System.out.println("Error authenticating to Force.com:"+statusCode);
System.out.println("Error is:"+EntityUtils.toString(response.getEntity()));
return null;
}
String result = EntityUtils.toString(response.getEntity());
JSONObject object = (JSONObject) new JSONTokener(result).nextValue();
ForceLogin login = new AddMerchandise().new ForceLogin();
login.accessToken = object.getString("access_token");
login.instanceUrl= object.getString("instance_url");
return login;
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
public static String addMerchandise(ForceLogin login,
String name,
String price,
String desc,
String inventory){
JSONObject mechandise = new JSONObject();
try {
if (name != null && !name.trim().equals(""))
mechandise.put("Name", name);
if (price != null && !price.trim().equals(""))
mechandise.put("Pice__c", price);
if (desc != null && !desc.trim().equals(""))
mechandise.put("Description__c", desc);
if (inventory != null && !inventory.trim().equals(""))
mechandise.put("Total_Inventory__c", inventory);
String restResourceURI = login.instanceUrl + "/services/data/v23.0/sobjects/Merchandise__c/";
HttpPost post = new HttpPost(restResourceURI);
StringEntity se = new StringEntity(mechandise.toString());
post.setEntity(se);
post.setHeader("Authorization", "OAuth " + login.accessToken);
post.setHeader("Content-type", "application/json");
DefaultHttpClient client = new DefaultHttpClient();
HttpResponse resp = client.execute(post);
String result = EntityUtils.toString(resp.getEntity());
if (resp.getStatusLine().getStatusCode() != HttpStatus.SC_CREATED)
{
JSONObject ret = ((JSONArray) new JSONTokener(result).nextValue()).getJSONObject(0);
System.out.println("Could not create new Merchandise record:"+resp.getStatusLine().getStatusCode());
System.out.println("Error code:"+ret.getString("errorCode"));
System.out.println("Error message:"+ret.getString("message"));
return null;
}
else{
return ((JSONObject) new JSONTokener(result).nextValue()).getString("id");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public class ForceLogin {
private String instanceUrl;
private String accessToken;
public String getInstanceUrl()
{
return instanceUrl;
}
public void setInstanceUrl(String i)
{
instanceUrl = i;
}
public String getAccessToken()
{
return accessToken;
}
public void setAccessToken(String a)
{
accessToken = a;
}
}
}