初めに
必要に応じて下記の記事もご参照ください。
Salesforce API連携入門(SF→外部システム編):Salesforceから外部システムのAPIをApex Calloutを用いて叩く記事
Salesforce API連携入門(外部システム→SF編):外部からRESTでSF標準のAPIを叩いてレコードをPOSTする記事
Salesforce API連携入門(SOAP API編):外部からSOAPでSF標準のAPIを叩いてレコードを取得&作成する記事
前書き
Apex SOAP Webサービスの公開方法がTrailheadの「Apexインテグレーションサービス」モジュールで十分に紹介されていないので、そこを補足していきたいと思います。
具体的には「Apex Web サービス」モジュールで紹介されている下記コードの”Add your code”の部分を補います。
手順
1.下記のApex Classを作成する。
global class AccountSoapWebService{
webService static Account getAccountById(String accountId){
Account acc=[SELECT id,name FROM Account WHERE id=: accountId];
return acc;
}
}
ポイント
- Classにglobal修飾子をつける
- MethodにwebService修飾子とstatic修飾子をつける
2. PostmanでエンドポイントURLとして下記を指定
https://私のドメイン.my.salesforce.com/services/Soap/class/クラス名
3. XML形式で下記のbodyを記述
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns="http://soap.sforce.com/schemas/class/クラス名">
<soapenv:Header>
<SessionHeader>
<sessionId>セッションID</sessionId>
</SessionHeader>
</soapenv:Header>
<soapenv:Body>
<メソッド名>
<引数名>渡したい値</引数名>
</メソッド名>
</soapenv:Body>
</soapenv:Envelope>
4. Sendをクリック
以上で、Apexで作成したSOAP Webサービスのメソッドを呼び出しに成功しましたノ
↓Return文