存儲在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的權限控制太嚴格了,對新手來說簡直就是噩夢。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答