【2025最新Salesforce 串接 SOAP API教學】 SOAP API 是什麼?舊系統怎麼整合?
- 大綜顧問
- 10月28日
- 讀畢需時 3 分鐘

文/工程師 Erick
五分鐘帶企業成長
很多人以為只要有 Salesforce 這樣的雲端 CRM,就能一次解決所有問題。事實卻不是這樣,企業內部還存在大量舊系統:ERP、票務、金融交易平台,它們依然使用 SOAP API。
問題是Salesforce 天生是走 REST JSON 路線的,這就好比一個人習慣說英文,卻必須去跟「只講法文」的人溝通。要怎麼辦?答案就是:讓 Salesforce 也能說 SOAP 的語言。
SOAP API 是什麼?
SOAP 是一種基於 XML 的網路傳輸協定,主要的目的在實現跨平台和跨語言的通訊,使用 XML 來定義傳輸資料的結構和內容。在 2025 年,REST API 幾乎是大家的標配,但 SOAP 依然在很多關鍵系統裡活得好好的,這邊舉幾個常見的系統:
ERP 系統:SAP、Oracle
航空與旅遊系統:Amadeus、Sabre
金融與保險系統:交易與驗證模組
這些系統累積多年,架構穩固,換掉成本高。它們靠 WSDL(Web Services Description Language)這本「規格手冊」,再加上嚴謹的安全協定,確保了穩定與一致性。所以企業如果想讓 Salesforce 成為數位核心,繞不開 SOAP。
系統怎麼整合?Salesforce 串接 SOAP API五大常見挑戰
把 Salesforce 拉去跟 SOAP 系統講話,會遇到幾個難題:
協定不同:Salesforce 習慣 JSON,但 SOAP 堅持 XML。
安全性要求高:很多 SOAP API 要帶 WS-Security header、Token,甚至數位簽章。
資料量龐大:SOAP 一次可能丟回上萬筆名單,而 Salesforce 對 callout 有大小與時間限制。
資料對應麻煩:XML 裡的欄位要正確 map 到 Salesforce Object/Field,才能真正落地
錯誤處理困難:SOAP Fault 訊息格式多樣,不處理好,系統就一臉「我不知道你在說什麼」。
Salesforce 不只能講 REST Salesforce 串接 SOAP API的六個解法
1. WSDL 導入
直接把 SOAP 系統給的 WSDL 丟進 Salesforce,就能自動生成程式碼
適合規格穩定、變動不大的 API。
2. 自己封裝 HttpRequest
手工組 SOAP Envelope,彈性最高
適合常常改版或需要特殊 header 的 API
3. 建立 Helper Utility
統一處理 WS-Security、Session Token、錯誤訊息
讓開發者只要專注於「業務邏輯」,不用每次重複組 XML
4. 解析 XML
小型回應 → Dom.Document 操作方便
大型回應 → XmlStreamReader 一邊讀一邊處理,避免爆記憶體
5. 非同步處理
用 Queueable 或 Batch Apex,拆分大資料,避免一次 callout 超時
6. 錯誤監控
統一攔截 SOAP Fault,寫進 Log Object。
加入 Retry 機制(例如 exponential backoff)。
Debug log 打印 header、body 與回應大小,方便追查。
Salesforce 串接 SOAP API的實際流程會是什麼?
使用者在 Salesforce 頁面輸入查詢條件(例如會員編號)。
後端 Controller 呼叫 SOAP Helper,組好一封「規格化的信件」。
這封信被送到外部系統(ERP / 航空 / 金融)。
外部系統回覆一份 XML。
Salesforce 解析 XML,把資料存到 Custom Object。
前端立刻顯示結果,或紀錄在 Log 裡方便追蹤。
換句話說,Salesforce 就像一個雙語翻譯:左手用 REST 和現代 App 對話,右手用 SOAP 跟老系統交談。
簡單程式範例
呼叫 SOAP API:
public class SoapApiUtil {
public static String callExternal(String endpoint, String body) {
HttpRequest req = new HttpRequest();
req.setEndpoint(endpoint);
req.setMethod('POST');
req.setHeader('Content-Type', 'text/xml;charset=UTF-8');
req.setBody(body);
Http http = new Http();
HttpResponse res = http.send(req);
if (res.getStatusCode() != 200) {
throw new CalloutException('SOAP Error: ' + res.getBody());
}
return res.getBody();
}
}
解析 XML:
Dom.Document doc = new Dom.Document();
doc.load(resBody);
Dom.XmlNode root = doc.getRootElement();
Dom.XmlNode body = root.getChildElement('Body', null);
Dom.XmlNode reply = body.getChildElement('ResponseMessage', null);
String status = reply.getChildElement('status', null).getText();
Salesforce 串接 SOAP API的四大優勢
資料一致性:CRM 和外部系統保持同步,不必人工對表。
效率提升:查詢、寫入自動完成,省去手動匯入匯出。
可擴充:同一套 Utility 可以接 ERP、航空、財務多個 SOAP API。
為未來鋪路:之後要轉 REST 或用 API Gateway,只需小改即可。
延伸思考
SOAP → REST 包裝:透過 MuleSoft 或 API Gateway,把 SOAP 包裝成 REST,前端開發更輕鬆。
安全性:處理敏感資料(護照、信用卡)時,必須加密傳輸與遮罩。
監控與治理:建立 API Log,記錄所有 Request/ Response,方便除錯與稽核。
【加入 Jetwell 會員】你將獲得最新的產業洞見、趨勢預測及專家建議,我們有市場領先的專業 ERP/CRM 顧問,每月精彩好文直送你的信箱。





