JavaからSalesforceにSOAP APIを叩くためのツール作成の入門。
最近Salesforceの開発に携わったので、備忘録として。
Spring Initializrから元コード取得
※ とくにDependenciesは選択しない
Mavenに以下追加
pom.xml
<dependency>
<groupId>com.force.api</groupId>
<artifactId>force-partner-api</artifactId>
<version>45.1.0</version>
</dependency>
force-partner-apiのPartnerって何?
※ Partner: Salesforceで汎用に使えるWSDLを使用
※ Enterprise: Salesforceで組織ごと独自で使用するWSDLを使用
Javaファイルに以下追加
package sfdc.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.sforce.soap.partner.PartnerConnection;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
login();
}
// Salesforceのログイン処理
private static boolean login() {
PartnerConnection partnerConnection = null;
boolean success = false;
String username = "※ログインID※";
String password = "※パスワード※";
String authEndPoint = "https://login.salesforce.com/services/Soap/u/45.0/";
// Sandboxの場合、testに変更する
try {
ConnectorConfig config = new ConnectorConfig();
config.setUsername(username);
config.setPassword(password);
config.setAuthEndpoint(authEndPoint);
config.setTraceMessage(true);
config.setPrettyPrintXml(true);
partnerConnection = new PartnerConnection(config);
success = true;
} catch (ConnectionException ce) {
ce.printStackTrace();
}
return success;
}
}
ここから先、InsertやUpdate処理を行うには・・・
以下の公式サイトのサンプルコード参照
つまづきポイント
* 型の違い
SObject contact = new SObject();
contact.setType("Contact");
contact.setField("FirstName", "Otto");
// 日付は、String ではなく Dateを入れる
contact.setField("Date__c", "Jespersen");
// 日時は、String ではなく Calenderを入れる
contact.setField("DateTime__c", "Professor");
* 外部キーのセット
SObject contact = new SObject();
contact.setType("Contact");
SObject account = new SObject();
account.setType("Account");
// 外部キー
account.setField("Key__c", value);
contact.setField("FirstName", "Otto");
contact.setField("Account.Key__c", account);