salesforce 零基礎學習(五十一)使用 Salesforce.com SOAP API 實現用戶登陸以及簡單的增刪改查(JAVA訪問salesforce)

此篇請參看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environment_tipsheet.pdfhtml

salesforce提供了多種API和外部交互,經常使用的有REST API方式以及SOAP API方式。其中,REST方式好處是方便,若是業務邏輯不復雜狀況下,rest方式是首選,可是若是操做特別複雜,好比在api中須要調用審批流,須要進行復雜的業務邏輯,則能夠考慮使用SOAP API。java

此篇內容爲使用java經過SOAP方式實現用戶登陸以及簡單的增刪改查操做,由於salesforce對於TLS升級到1.1,方便起見,目前使用的JDK版本爲1.8,使用SOAP方式操做的步驟以下(假定你的jdk安裝完成以及環境變量配置完成):api

1.下載Force.com Web Service Connectorapp

下載連接爲http://mvnrepository.com/artifact/com.force.api/force-wsc  我下載的版本爲38.0.4ide

2.下載開發的WSDL文件ui

Setup->Build->API,這裏有不少能夠選擇的WSDL,企業級WSDL,合做夥伴,元信息等。此處選擇企業級WSDL,選擇之後詳情頁右鍵另存爲MyProject.wsdl,名字隨便起spa

不一樣WSDL區別:https://developer.salesforce.com/docs/atlas.en-us.202.0.api.meta/api/sforce_api_quickstart_intro.htm#choose_wsdlrest

3.下載Rhino JavaScript framework,下載完rar文件之後選擇其中的js.jarcode

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Download_Rhinoorm

4.下載StringTemplate engine framework ,我選擇的是目前最新的4.0.8.jar

http://www.stringtemplate.org/download.html

5.下載ANTRL runtime,我下載的是最新的版本的complete模式,其餘模式有可能缺乏相關的類

http://www.antlr.org/download.html

6.生成myproject.jar,將上述jar包以及myproject.wsdl放置在C:\Users\test\Desktop\myproject目錄下,打開控制檯

  1) cd C:\Users\test\Desktop\myproject

  2)java -classpath force-wsc-38.0.4.jar;ST4-4.0.8.jar;antlr-4.5.3-complete.jar;js.jar com.sforce.ws.tools.wsdlc myproject.wsdl myproject.jar

 

 

 

 7.使用force-wsc-38.04.jar以及生成的myproject.jar實現java經過soap api方式訪問sfdc,使用soap api訪問有不少限制,好比一次insert或者upsert不能超過200等,這裏舉例登陸以及批量添加功能。

 限制詳情:https://developer.salesforce.com/docs/atlas.en-us.204.0.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_apicalls.htm

SOAP API : https://resources.docs.salesforce.com/204/latest/en-us/sfdc/pdf/apex_api.pdf

 

 1 package controller;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import com.sforce.soap.enterprise.Connector;
 7 import com.sforce.soap.enterprise.EnterpriseConnection;
 8 import com.sforce.soap.enterprise.sobject.Company_Info__c;
 9 import com.sforce.ws.ConnectionException;
10 import com.sforce.ws.ConnectorConfig;
11 
12 public class Test {
13     static final String USERNAME = "zhangyueqi_dlmu@163.com";
14     static final String PASSWORD = "zyq123EfaM6E59ROTm6mgvEjXMD4IUS";
15     static EnterpriseConnection connection;
16     static List<Company_Info__c> companyInfoList;
17     public static void main(String[] args) {
18 
19         ConnectorConfig config = new ConnectorConfig();
20         config.setUsername(USERNAME);
21         config.setPassword(PASSWORD);
22 
23         try {
24 
25             connection = Connector.newConnection(config);
26             System.out.println("Auth EndPoint: "+config.getAuthEndpoint());
27             System.out.println("Service EndPoint: "+config.getServiceEndpoint());
28             System.out.println("Username: "+config.getUsername());
29             System.out.println("SessionId: "+config.getSessionId());
30             companyInfoList = new ArrayList<Company_Info__c>();
31             createData();
32             List<Company_Info__c> tempCompanyInfoList = new ArrayList<Company_Info__c>();
33             for(int i=0;i<companyInfoList.size();i++) {
34                 tempCompanyInfoList.add(companyInfoList.get(i));
35                 //create超過200將會報錯。sfdc的limit
36                 if(i % 199 == 198 || i == companyInfoList.size()-1) {
37                     connection.create(tempCompanyInfoList.toArray(new Company_Info__c[tempCompanyInfoList.size()]));
38                     tempCompanyInfoList.clear();
39                 }
40             }
41             
42         } catch (ConnectionException e1) {
43             e1.printStackTrace();
44         } 
45     }
46     
47     private static void createData() {
48         for(int i=0;i<220;i++) {
49             Company_Info__c companyInfo = new Company_Info__c();
50             companyInfo.setCompany_Name__c("company name" + i);
51             companyInfo.setCompany_Code_Unique__c("company code unique" + i);
52             companyInfo.setCompany_Phone__c("13800000000");
53             companyInfo.setCompany_Place__c("company place " + i);
54             companyInfo.setCompany_Type__c("company type" + i);
55             companyInfoList.add(companyInfo);
56         }
57     }
58 }
Test

總結:此篇主要內容爲如何生成SOAP以及SOAP API的簡單使用,詳情能夠參看SOAP API獲取更多使用功能。篇中若是有錯誤地方,歡迎指正,有問題歡迎留言。

相關文章
相關標籤/搜索