首先須要的是本身Salesforce平臺的權限經過。登錄本身的Salesforce,下載WSDL文件。html
依次點擊右上角你的名字中設置--》集成--》APIjava
在頁面上選擇要生成WSDL的類型,在彈出的頁面選擇 右鍵 -->頁面另存爲,便可,以下兩圖顯示:api
分別下點生成企業WSDL,生成合做夥伴WSDL,生成元數據WSDL安全
點擊鼠標右鍵將文件另保存,可爲.xml的形式也能夠爲.wsdl的文件形式框架
Wsc.jar 下載地址:https://mvnrepository.com/artifact/com.force.api/force-wsc 選擇最新版本的jsp
選擇下圖中的jar就能下載jar包到本地啦(對應jdk版本1.8或者以上)測試
ST4-4.0.8.jar (https://www.stringtemplate.org/download.html)spa
若是沒有會報錯:3d
Exception in thread "main" java.lang.NoClassDefFoundError:org/stringtemplate/v4/STGroupDirxml
Antlr-runtime-3.5.2.jar (https://mvnrepository.com/artifact/org.antlr/antlr-runtime/3.5.2)
用於java代碼運行時構造,編譯,轉換的框架。
沒有的話報錯:
Exception in thread "main" java.lang.NoClassDefFoundError: org/antlr/runtime/CharStream
Tools.jar (安裝jdk的目錄下有,無需下載。直接複製)
把剛纔下載的jar包和3個wsdl文件放在同一個文件夾中(如下enterprise.jar,metadata.jar,partner.jar是經過下面cmd命令生成jar的)
打開cmd,將路徑定位到剛纔的文件目錄。
輸入 java -classpath antlr-runtime-3.5.2.jar;tools.jar;st4-4.0.4.jar;force-wsc-45.1.0.jar com.sforce.ws.tools.wsdlc wsdl.xml enterprise.jar
java -classpath antlr-runtime-3.5.2.jar;tools.jar;st4-4.0.4.jar;force-wsc-45.1.0.jar com.sforce.ws.tools.wsdlc wsdl.jsp.xml partner.jar
java -classpath antlr-runtime-3.5.2.jar;tools.jar;st4-4.0.4.jar;force-wsc-45.1.0.jar com.sforce.ws.tools.wsdlc metadata.xml metadata.jar
建立java程序和引用jar外部包我就不解釋,要應用的jar就是上文生成的3個jar(enterprise.jar,metadata.jar,partner.jar),對,也要 force-wsc-45.1.0.jar
打開Eclipse建立一個JAVA項目,將上面說的四個jar包引進項目。
貼上接口代碼,本例用的salesforce自帶的對象Accout
package com.yipan;
import com.sforce.soap.enterprise.Connector;
import com.sforce.soap.enterprise.EnterpriseConnection;
import com.sforce.soap.enterprise.QueryResult;
import com.sforce.soap.enterprise.SaveResult;
import com.sforce.soap.enterprise.sobject.Account;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;
public class Test {
static final String USERNAME = "YOUR-USERNAME"; //Salesforce帳號中的用戶名
static final String PASSWORD = "YOUR-PASSWORD&security token"; //密碼,這個密碼有點特殊,須要在密碼後面加入安全標記
static EnterpriseConnection connection;
public static void main(String[] args) {
ConnectorConfig config = new ConnectorConfig();
config.setUsername(USERNAME);
config.setPassword(PASSWORD);
try {
connection = Connector.newConnection(config);
System.out.println("Auth EndPoint: "+config.getAuthEndpoint());
System.out.println("Service EndPoint: "+config.getServiceEndpoint());
System.out.println("Username: "+config.getUsername());
System.out.println("SessionId: "+config.getSessionId());
// 增刪改查
queryContacts();
//createAccounts();
//updateAccounts();
//deleteAccounts();
} catch (ConnectionException e1) {
e1.printStackTrace();
}
}
// queries and displays the 5 newest contacts
private static void queryContacts() {
System.out.println("Querying for the 5 newest Account...");
try {
// query for the 5 newest contacts
//SELECT Id, FirstName, LastName, Account.Name " + "FROM Contact WHERE AccountId != NULL ORDER BY CreatedDate DESC LIMIT 5
QueryResult queryResults = connection.query("SELECT Id, Name,NumberOfEmployees FROM Account WHERE ID !=NULL ORDER BY CreatedDate DESC LIMIT 5");
if (queryResults.getSize() > 0) {
for (int i=0;i<queryResults.getRecords().length;i++) {
// cast the SObject to a strongly-typed Contact
//Contact c = (Contact)queryResults.getRecords()[i];
Account c=(Account)queryResults.getRecords()[i];
System.out.println("Id: " + c.getId() + " - Name: "+c.getName()+"NumberOfEmployees: "+c.getNumberOfEmployees());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
// create 5 test Accounts
private static void createAccounts() {
System.out.println("Creating 5 new test Accounts...");
Account[] records = new Account[2];
try {
// create 5 test accounts
for (int i=0;i<2;i++) {
Account a = new Account();
a.setName("hello"+i);
records[i] = a;
}
// create the records in Salesforce.com
SaveResult[] saveResults = connection.create(records);
// check the returned results for any errors
for (int i=0; i< saveResults.length; i++) {
if (saveResults[i].isSuccess()) {
System.out.println(i+". Successfully created record - Id: " + saveResults[i].getId());
} else {
com.sforce.soap.enterprise.Error[] errors = saveResults[i].getErrors();
for (int j=0; j< errors.length; j++) {
System.out.println("ERROR creating record: " + errors[j].getMessage());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
// updates the 5 newly created Accounts
private static void updateAccounts() {
System.out.println("Update the 5 new test Accounts...");
Account[] records = new Account[5];
try {
QueryResult queryResults = connection.query("SELECT Id, Name FROM Account ORDER BY " +
"CreatedDate DESC LIMIT 5");
if (queryResults.getSize() > 0) {
for (int i=0;i<queryResults.getRecords().length;i++) {
// cast the SObject to a strongly-typed Account
Account a = (Account)queryResults.getRecords()[i];
System.out.println("Updating Id: " + a.getId() + " - Name: "+a.getName());
// modify the name of the Account
a.setName(a.getName()+" -- UPDATED");
records[i] = a;
}
}
// update the records in Salesforce.com
SaveResult[] saveResults = connection.update(records);
// check the returned results for any errors
for (int i=0; i< saveResults.length; i++) {
if (saveResults[i].isSuccess()) {
System.out.println(i+". Successfully updated record - Id: " + saveResults[i].getId());
} else {
com.sforce.soap.enterprise.Error[] errors = saveResults[i].getErrors();
for (int j=0; j< errors.length; j++) {
System.out.println("ERROR updating record: " + errors[j].getMessage());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
// delete the 5 newly created Account
private static void deleteAccounts() {
System.out.println("Deleting the 5 new test Accounts...");
String[] ids = new String[5];
try {
QueryResult queryResults = connection.query("SELECT Id, Name FROM Account ORDER BY " +
"CreatedDate DESC LIMIT 5");
if (queryResults.getSize() > 0) {
for (int i=0;i<queryResults.getRecords().length;i++) {
// cast the SObject to a strongly-typed Account
Account a = (Account)queryResults.getRecords()[i];
// add the Account Id to the array to be deleted
ids[i] = a.getId();
System.out.println("Deleting Id: " + a.getId() + " - Name: "+a.getName());
}
}
// delete the records in Salesforce.com by passing an array of Ids
com.sforce.soap.enterprise.DeleteResult[] deleteResults = connection.delete(ids);
// check the results for any errors
for (int i=0; i< deleteResults.length; i++) {
if (deleteResults[i].isSuccess()) {
System.out.println(i+". Successfully deleted record - Id: " + deleteResults[i].getId());
} else {
com.sforce.soap.enterprise.Error[] errors = deleteResults[i].getErrors();
for (int j=0; j< errors.length; j++) {
System.out.println("ERROR deleting record: " + errors[j].getMessage());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
運行項目(在此截圖查詢的記錄,其它的都測試過了)
根據控制檯ID能夠去salesforce查詢到該客戶
若是須要用到新的對象,好比我本身建立的Position對象,那麼能夠在對象的詳細頁面找到對象對應的api名稱,以及對象中字段api名稱,以下圖
找到對應的api名稱後,若是須要建立一條Position紀錄,那麼能夠這樣new一個對象 Position__c a = new Position__c(); 而後經過Set的擴展方法來對對象字段的值進行賦值即可。