首页 > 编程 > PHP > 正文

salesforce web service入门使用指南之PHP篇

2020-03-22 19:58:37
字体:
来源:转载
供稿:网友
  • 存储在salesforce中的数据,如标准对象和自定义对象,均可通过Web Service来调用,本文以PHP为开发语言来讲解其开发流程。

    第一步:下载PHP Toolkit。
    到http://wiki.developerforce.com/page/Force.com_Toolkit_for_PHP 下载最新的PHP版工具包。
    下载后解压,把 test和 soapclient两个文件夹复制到你的网站根目录下。

    第二步:下载WSDL。
    最常用的是企业版和合作伙伴WSDL,我们要用的是企业版的,因为它包含了自定义对象。
    设置-》html' target='_blank'>应用程序设置-》API,生成企业版的WSDL,把生成的XML另存为文件,命名为wsdl.enterprise.xml ,放到 soapclient目录下。

    第三步:获取安全标记
    由于SOAP客户端在登录时使用的密码是 密码+安全标记 的认证方式,所以安全标记是必须的。
    设置-》我的个人信息-》重新设置我的安全标记,完成后安全标记会发送到你的邮箱。

    第四步:开始测试Web Service
    编辑/test/enterprise.php,替换为以下内容


    <?php// SOAP_CLIENT_BASEDIR - folder that contains the PHP Toolkit and your WSDL// $USERNAME - variable that contains your Salesforce.com username (must be in the form of an email)// $PASSWORD - variable that contains your Salesforce.ocm passwordheader("Content-Type:text/html;charset=UTF-8");ini_set("soap.wsdl_cache_enabled", "0"); //清空原有的wsdl缓存define("SOAP_CLIENT_BASEDIR", "../soapclient");$USERNAME='******@***.com';  //登录用户名$PASSWORD="*****"."*****************";   //前面是登录密码,后面是第二步获取的安全标记require_once (SOAP_CLIENT_BASEDIR.'/SforceEnterpriseClient.php');require_once (SOAP_CLIENT_BASEDIR.'/SforceHeaderOptions.php');// domainName__c是一个自定义对象!!!$query="Select Name,ID__c,expireDate__c,serviceProvider__c,firstYearFee__c,nextYearFee__c,regDate__c From domainName__c"; try {	$mySforceConnection = new SforceEnterpriseClient();	$mySoapClient = $mySforceConnection->createConnection(SOAP_CLIENT_BASEDIR.'/wsdl.enterprise.xml');	$mylogin = $mySforceConnection->login($USERNAME, $PASSWORD);        //var_dump($mySforceConnection->getUserInfo());	//var_dump($mylogin->userInfo);        //echo "***** Get Server Timestamp *****/n";        //$response = $mySforceConnection->getServerTimestamp();        //var_dump($response);        //var_dump($mySforceConnection->describeSObject('User'));          $result = $mySforceConnection->query($query);        var_dump($result->records);} catch (Exception $e) {	var_dump($e);}?>

    输出示例:


    array (size=2)  0 =>     object(stdClass)[8]      public 'Id' => null      public 'ID__c' => string 'DN00000002' (length=10)      public 'Name' => string 'kiccp.com' (length=9)      public 'expireDate__c' => string '2013-10-28' (length=10)      public 'firstYearFee__c' => float 138      public 'nextYearFee__c' => float 66      public 'regDate__c' => string '2009-10-28' (length=10)      public 'serviceProvider__c' => string 'a0I90000008QWMxEAO' (length=18)  1 =>     object(stdClass)[9]      public 'Id' => null      public 'ID__c' => string 'DN00000001' (length=10)      public 'Name' => string 'wfgweifn.com' (length=12)      public 'expireDate__c' => string '2014-05-03' (length=10)      public 'firstYearFee__c' => float 38      public 'nextYearFee__c' => float 68      public 'regDate__c' => string '2013-05-03' (length=10)      public 'serviceProvider__c' => string 'a0I90000008QWMnEAO' (length=18)

    常见错误及解决办法:
    0.错误信息:不支持https
    解决办法:为PPH启用https,apache的话应该是开启openssl扩展。

    1.错误信息:提示用户名密码错误。
    解决办法:确认用户名密码正确及密码后加上了正确的安全标记。

    2.错误信息:SoapFault Object ( [message:protected] => Element {}item invalid at this location
    解决办法:你可能用的是SforcePartnerClient,改成SforceEnterpriseClient,并使用企业版WSDL。www.it165.net

    3.错误信息:获取的记录集为空
    解决办法:确认当前用户对对象有访问权限且查询语句书写正确,且所使用的是最新的企业版WSDL(更新对象属性或字段后需要重新生成WSDL)。另外你或许需要清空WSDL缓存,代码如下:

            ini_set("soap.wsdl_cache_enabled", "0");        

    以上错误本人在开发过程中全部遇到过,汗。。。

    值得注意的是不同的force.com版本有不同的API调用次数限制,比如开发者版和企业版每24小时有5000次的调用限制。

    以上测试是在开发者版本(Developer Edition)下进行的。其它版本使用方法一样。由于开发者版本通常只创建一个帐号,这个帐号对所有对象都有读写删权限,当把打包的应用程序部署到企业版上面时,请务必确认用户权限!!!

    本人大约是从09年10月开始接触Salesforce CRM,当时注册了三个免费的企业版帐号,现在这类帐号已关闭注册,只能申请试用一个月,购买的话是每用户每月125美元(哥赚了,哈哈,不好好用用实在对不起自己)。企业版数据存储空间1G,而免费的开发者版只有20M,一条记录是2K,所以开发者版只能存储1万条记录,毕竟它是用来做测试的,测试完成后把应用程序打包放到AppExchange上给企业版用才是最终目的。

    PS: salesforce有移动版,支持Android,iPhone,BlackBerry,可在手机上访问标准对象和自定义对象。开发者版本可使用完整版本的Salesforce Mobile,而企业版只能使用Mobile Lite,它不支持访问自定义对象。下一篇博文中我会给出Salesforce Mobile访问自定义对象的方法。因为Salesforce的权限控制太严格了,对新手来说简直就是噩梦。


    摘自:blog.kiccp.comPHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表