zoukankan      html  css  js  c++  java
  • Salesforce SOAP 接口集成服务(二)

    在 Salesforce SOAP 接口集成服务 一文中,主要讲述了如何调用外部服务器的SOAP接口,那么该如何开放Salesforce内部SOAP接口给外部系统呢?
    Apex类方法作为自定义SOAP Web服务调用公开,允许外部应用程序调用Apex Web服务以在Salesforce中执行操作,很简单
    • 定义class为global
    • Method 使用关键字 webservice 声明
    • webservice 声明的method需要声明为static
    • Method返回值不能是:Map/Set
    • webservice 声明的变量不能标记为static
    global class MyWebService {
        webservice static Id makeContact(String contactLastName, Account a) {
            Contact c = new Contact(lastName = contactLastName, AccountId = a.Id);
            insert c;
            return c.id;
        }
    }

    第一步:在开放Apex类方法作为SOAP Web服务时,需要在Sales force → Setup → API, 根据需求选择一个合适的WSDL文件,这里我们选择Partner WSDL

    Tips:Salesforce提供WSDL(Web Service Description Language)文件。它们被称为“企业WSDL”和“合作伙伴WSDL”。 WSDL是一个XML文档,其中包含有关如何使用Web服务进行通信的标准说明(Salesforce API作为Web服务公开)。 WSDL被开发人员用来帮助创建Salesforce集成件。一个典型的过程涉及使用开发环境(例如,Eclipse for Java或Visual Studio for .Net)使用WSDL,并生成在集成中引用的类

    参考链接:Differences between Salesforce provided WSDL files

    /*********************************************
    企业WSDL
    1.企业WSDL是强类型的。
    2.企业WSDL绑定(绑定)到Salesforce的特定配置(即特定组织的Salesforce配置)。
    3.如果对组织的Salesforce配置进行了修改(例如,自定义字段或自定义对象),则Enterprise WSDL会更改。
    
    由于上述原因,企业WSDL主要面向客户
    
    WSDL合作伙伴
    1.合作伙伴WSDL是松散键入的。
    2.合作伙伴WSDL可用于反映/询问Salesforce的任何配置(即,任何组织的Salesforce配置)。
    3.合作伙伴WSDL是静态的,因此,如果对组织的Salesforce配置进行了修改,则WSDL不会更改。
    
    由于上述原因,合作伙伴WSDL主要用于合作伙伴
    
    **********************************************/

    第二步:然后我们来创建一个WebServie类: GenerateContact

    /**
     * 
     * @Author:Ricardo
     * @Time:2020-04-21
     * @function:test SOAP Method
     * 
     * **/
    global class GenerateContact {
        webservice static string createcontactinorganisationsecond(string firstname,string lastname,string title,string cemail){
            contact con = new contact();
            con.FirstName = firstname;
            con.LastName = lastname;
            con.Title = title;
            con.email = cemail;
            insert con;
            return 'success';
        }
    }

    第三步:将我们的WebService类生成WSDL文件,然后保存起来

     完成这几步之后,我们登录另一个Sales force账户,参照Salesforce SOAP 接口集成服务这篇博客中,关于如何引入外部SOAP接口的描述,将上面的俩WSDL文件导入系统.

    需要注意的一个,我在尝试引入Partner WSDL文件时,遇到一个异常:

    根据错误描述,我发现WSDL文件中有anyType这种元素,解决办法就是用文本编辑器将所有的anyType替换成String即可.

    在上传GenerateContact.xml时,修改下类名称,方便使用

    在生成的SOAP_GenerateContact和partnerSoapSforceCom中查找endpoint_x,并将其添加到remote site(远程站点)中

     OK,上述步骤都搞定之后呢,我们就可以从尝试调用这个SOAP方法了,代码如下

    partnerSoapSforceCom.Soap mypartnersoap = new partnerSoapSforceCom.Soap();
    partnerSoapSforceCom.LoginResult  partnerloginresult = mypartnersoap.login('child-system-username','child-system-password + child-system-SecurityToken');
    SOAP_GenerateContact.SessionHeader_element webservicesessionheader = new SOAP_GenerateContact.SessionHeader_element();
    webservicesessionheader.sessionId = partnerloginresult.sessionId; 
    
    SOAP_GenerateContact.GenerateContact generateContact = new SOAP_GenerateContact.GenerateContact();
    generateContact.SessionHeader = webservicesessionheader; 
    String result = generateContact.createcontactinorganisationsecond('first','last','contactTitle','blog@test.com');
    system.debug('result:' + result );

    在控制台中执行这段代码,然后在我们的子系统中,就能找到这条通过接口创建的数据记录了

     这篇博客主要记录SOAP API的登录以及简单的插入数据,更多功能可以查询Sales force官方给出的SOAP API的文档

     参考文档:

    SOAP API Call Limits

    SOAP APEX API

  • 相关阅读:
    mysql 查询当月天数
    mybatis <collection>标签 类型为string时无法获取重复数据错误
    eclipse 关闭validating
    YAGNI 声明
    tomcat 异常
    svn 用cmd命令行启动服务
    linux 命令
    windows10安装liux系统
    一带一路是个啥?
    串口通信协议
  • 原文地址:https://www.cnblogs.com/luqinghua/p/12632156.html
Copyright © 2011-2022 走看看