此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environment_tipsheet.pdf

salesforce提供了多种API和外部交互,常用的有REST API方式以及SOAP API方式。其中,REST方式好处是方便,如果业务逻辑不复杂情况下,rest方式是首选,但是如果操作特别复杂,比如在api中需要调用审批流,需要进行复杂的业务逻辑,则可以考虑使用SOAP API。

此篇内容为使用java通过SOAP方式实现用户登录以及简单的增删改查操作,因为salesforce对于TLS升级到1.1,方便起见,目前使用的JDK版本为1.8,使用SOAP方式操作的步骤如下(假定你的jdk安装完成以及环境变量配置完成):

1.下载Force.com Web Service Connector

下载链接为http://mvnrepository.com/artifact/com.force.api/force-wsc  我下载的版本为38.0.4

2.下载开发的WSDL文件

Setup->Build->API,这里有很多可以选择的WSDL,企业级WSDL,合作伙伴,元信息等。此处选择企业级WSDL,选择以后详情页右键另存为MyProject.wsdl,名字随便起

不同WSDL区别:https://developer.salesforce.com/docs/atlas.en-us.202.0.api.meta/api/sforce_api_quickstart_intro.htm#choose_wsdl

3.下载Rhino JavaScript framework,下载完rar文件以后选择其中的js.jar

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

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

 package controller;

 import java.util.ArrayList;
import java.util.List; import com.sforce.soap.enterprise.Connector;
import com.sforce.soap.enterprise.EnterpriseConnection;
import com.sforce.soap.enterprise.sobject.Company_Info__c;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig; public class Test {
static final String USERNAME = "zhangyueqi_dlmu@163.com";
static final String PASSWORD = "zyq123EfaM6E59ROTm6mgvEjXMD4IUS";
static EnterpriseConnection connection;
static List<Company_Info__c> companyInfoList;
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());
companyInfoList = new ArrayList<Company_Info__c>();
createData();
List<Company_Info__c> tempCompanyInfoList = new ArrayList<Company_Info__c>();
for(int i=0;i<companyInfoList.size();i++) {
tempCompanyInfoList.add(companyInfoList.get(i));
//create超过200将会报错。sfdc的limit
if(i % 199 == 198 || i == companyInfoList.size()-1) {
connection.create(tempCompanyInfoList.toArray(new Company_Info__c[tempCompanyInfoList.size()]));
tempCompanyInfoList.clear();
}
} } catch (ConnectionException e1) {
e1.printStackTrace();
}
} private static void createData() {
for(int i=0;i<220;i++) {
Company_Info__c companyInfo = new Company_Info__c();
companyInfo.setCompany_Name__c("company name" + i);
companyInfo.setCompany_Code_Unique__c("company code unique" + i);
companyInfo.setCompany_Phone__c("13800000000");
companyInfo.setCompany_Place__c("company place " + i);
companyInfo.setCompany_Type__c("company type" + i);
companyInfoList.add(companyInfo);
}
}
}

Test

总结:此篇主要内容为如何生成SOAP以及SOAP API的简单使用,详情可以参看SOAP API获取更多使用功能。篇中如果有错误地方,欢迎指正,有问题欢迎留言。

salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)的更多相关文章

  1. salesforce零基础学习(一百零五)Change Data Capture

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...

  2. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  3. salesforce零基础学习(一百一十一)custom metadata type数据获取方式更新

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.234.0.apexref.meta/apexref/apex_methods_syst ...

  4. salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现

    项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...

  5. salesforce零基础学习(九十六)Platform Event浅谈

    本篇参考:https://developer.salesforce.com/blogs/2018/07/which-streaming-event-do-i-use.html https://trai ...

  6. salesforce零基础学习(一百一十)list button实现的一些有趣事情

    本篇参考: salesforce零基础学习(九十五)lightning out https://developer.salesforce.com/docs/component-library/docu ...

  7. salesforce 零基础学习(六十八)http callout test class写法

    此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...

  8. salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见

    项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...

  9. salesforce零基础学习(八十七)Apex 中Picklist类型通过Control 字段值获取Dependent List 值

    注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-fr ...

随机推荐

  1. DNS枚举工具DNSenum

    DNS枚举工具DNSenum   DNSenum是一款非常强大的域名信息收集工具.它能够通过谷歌或者字典文件猜测可能存在的域名,并对一个网段进行反向查询.它不仅可以查询网站的主机地址信息.域名服务器. ...

  2. iOS路径沙盒文件管理(转载)

    iOS路径沙盒文件管理,看到博主总结的很好,转载过来,原文:http://www.aichengxu.com/view/35264 一.iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文 ...

  3. 分布式平台Spark环境的搭建

    1.安装Spark之前需要先安装Java,Scala及Python(个人喜欢用pyspark,当然你也可以用原生的Scala) 首先安装Java jdk: 我们可以在Oracle的官网下载Java S ...

  4. 【滤波】标量Kalman滤波的过程分析和证明及C实现

    摘要: 标量Kalman滤波的过程分析和证明及C实现,希望能够帮助入门的小白,同时得到各位高手的指教.并不涉及其他Kalman滤波方法. 本文主要参考自<A Introduction to th ...

  5. Xcode playground markdown常用语法

    //: **Bold** *Italic* /*: # h1 ## h2 ### h3 #### h4 h5 h6 same as h3 --- --- --- * blank seperate li ...

  6. centos yum换阿里云源

    阿里云Linux安装软件镜像源 阿里云是最近新出的一个镜像源.得益与阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源. 阿里云Linux安装镜像源地址:http://mirrors.aliyun ...

  7. 利用注解来保存uri

    一直对getRequestURI()与getRequestURL()理解不透彻,因此今天通过查找资料,现将些许收获分享一下: [非原创]代码搬运工..(*^__^*) 1.request.getSch ...

  8. Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发

    在这章里面,提到的隐喻,类同于比喻(建模)的方法的去理解软件开发. 隐喻的优点在于其可预期的效果能被所有人所理解.不必要的沟通和误解也因此大为减低,学习与教授更为快速,实际上,隐喻是对概念进行内在化和 ...

  9. Mac osx 安装PIL出现Some externally hosted files were ignored (use --allow-external PIL to allow).

    出现这个问题Some externally hosted files were ignored (use --allow-external PIL to allow)的主要原因是PIL的一些依赖库还没 ...

  10. WP8解析JSON格式(使用DataContractJsonSerializer类)(推荐)

    DataContractJsonSerializer是.NET自带的类,在解析JSON格式的时候使用起来方便快捷,至于生成方面由于暂时没用到就没去看了.使用需要引用System.Runtime.Ser ...