最实用的java调用salesforce中的webservice接口

看了看自己前一篇博客还是去年12月份的,看来已经大半年没写博客了。一方面是太忙了,但最重要的还是懒得写了(想想之前还是一周保持两篇的更新速度)。借这次五一长假调查salesforce的web service功能就开启今年的第一篇博客吧!

背景

在Salesforce中可以创建Web Service供外部系统调用,并且可以以SOAP或者REST方式向外提供调用接口,下来的内容将详细讲述一下用SOAP的方式创建Web Service并且用java的程序进行简单的调用。
在查看网上的多片博客后终于实现。下面记录一下过程。

【注:如果要使用salesforce中的自定义的Apex Class时,要想使其成为web service,那么class一定要定义成global的,具体的方法要用 webService static 修饰】

1):在Salesforce中创建如下Class,例如:

global class SFAccountWebService {
   
    
    webService static string UpsertAccount(String accountXmlInfo) {
   
        Account currentAcc = GenerateAccountFromXmlInfo(accountXmlInfo);
        try
        {
   
            Account acc = [Select Id From Account a Where AccountNumber =: currentAcc.AccountNumber];
            if(acc != null){
   
                currentAcc.Id = acc.Id;
            }
            upsert currentAcc;
            return 'true';
        }
        catch(exception ex){
   
            return 'false';    
        }
    }
    
    
    private static Account GenerateAccountFromXmlInfo(String accountXmlInfo){
   
        Account currentAcc = new Account();
        // Parse the xml info to generate the Account Object
        return currentAcc;
    }
    
}

2):在保存好上述的class之后,我们到setup --> build --> develop --> apex classes 中找到刚刚保存的class,我们会发现在对应的Action中有WSDL这个选项,此选项就是Salesforce默认所提供的将Web Service的class转化成WSDL文件。如下图所示

在这里插入图片描述
3):点击上图的WSDL按钮,会看到如下界面,这里显示的是生成的WSDL文件的详细信息,我们点击鼠标右键,将此文件保存到本地,这里姑且取名为SFAccountWebService.wsdl
在这里插入图片描述
接下来就是将SFAccountWebService.wsdl生成对应的SFAccountWebService.jar,具体怎么生成就是我接下来要讲的内容,再讲这个之前先讲讲怎么通过Salesforce平台的权限。

通过Salesforce平台权限

在Salesforce中创建了自己需要用到的对象后,我们想要在别的应用中读写纪录到对象中,首先需要的是自己Salesforce平台的权限通过。登陆自己的Salesforce,下载WSDL文件。

  1. 下载Salesforce平台中WSDL文件
    依次点击Your Name --> Setup --> App Setup --> Develop --> API。或者直接在搜索框中搜索API。
    在这里插入图片描述
    分别下点生成企业WSDL,生成合作伙伴WSDL,生成元数据WSDL。点击鼠标右键将文件另保存,可为.xml的形式也可以为.wsdl的文件形式
    在这里插入图片描述
    在这里插入图片描述
  2. 下载并构建WSC Jar,然后把对应的wsdl文件编译成对应jar
    下面是需要的Jar包下载地址。
  • Wsc.jar 下载地址:(https://mvnrepository.com/artifact/com.force.api/force-wsc) 选择最新版本的
    在这里插入图片描述
  • ST4-4.0.8.jar (https://www.stringtemplate.org/download.html)
    在这里插入图片描述
  • Antlr-runtime-3.5.2.jar (https://mvnrepository.com/artifact/org.antlr/antlr-runtime/3.5.2)
    在这里插入图片描述
  • Tools.jar (安装jdk的目录下有,无需下载。直接复制)
    在这里插入图片描述
    把刚才下载的jar包和3个wsdl文件放在同一个文件夹中(以下enterprise.jar,metadata.jar,partner.jar是通过下面cmd命令生成jar的)
    在这里插入图片描述
    打开cmd,将路径定位到刚才的文件目录。
    然后执行以下命令生成对应的Jar包
  • 生成partner.jar
java -classpath antlr-runtime-3.5.2.jar:ST-4.3.jar:tools.jar:force-wsc-49.2.0.jar com.sforce.ws.tools.wsdlc wsdl.jsp.xml partner.jar
  • 生成enterprise.jar
java -classpath antlr-runtime-3.5.2.jar:ST-4.3.jar:tools.jar:force-wsc-49.2.0.jar com.sforce.ws.tools.wsdlc wsdl.xml enterprise.jar 
  • 生成metadata.jar
java -classpath antlr-runtime-3.5.2.jar:ST-4.3.jar:tools.jar:force-wsc-49.2.0.jar com.sforce.ws.tools.wsdlc metadata.xml metadata.jar

在这里插入图片描述
这个时候文件夹的文件如下:
在这里插入图片描述

  1. 创建程序并引用外部jar文件
    创建一个java project命名为TestWebService,然后将partner.jarmetadata.jarenterprise.jarforce-wsc-49.2.0.jar引入外部Jar包(右键项目,选择Build Path,然后选择Libraries,点击Add External JARS
    在这里插入图片描述
  2. 测试程序
package wsc;

import com.sforce.soap.enterprise.Connector;
import com.sforce.soap.enterprise.DeleteResult;
import com.sforce.soap.enterprise.EnterpriseConnection;
import com.sforce.soap.enterprise.Error;
import com.sforce.soap.enterprise.QueryResult;
import com.sforce.soap.enterprise.SaveResult
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值