Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

エラー「System.CalloutException: Callout loop not allowed (コールアウトループは許可されません)」

公開日: Oct 13, 2022
説明

「System.CalloutException: Callout loop not allowed (コールアウトループは許可されません)」は通常、コールアウトの発信元が別のコールアウトからの場合に表示されます。

Salesforce A  ----Callout----> Salesforce B  ----Callout----> Webservice

外部システムで組織 A からコールアウトを開始し、そのコールアウトが別のコールアウトを組織 B から呼び出すと、「Callout loop not allowed (コールアウトループは許可されません)」エラーが表示されます。別の Salesforce 組織から Salesforce 組織にコールアウトを行うことはできますが、別のコールアウト内から行うことはできません。

解決策
1. 組織 B で、別の Webservice にコールアウトを行う Webservice クラス AccountPlan を作成します。 
たとえば、組織 B は 2 つの整数を加算するために、計算機能の Webservice にコールアウトを行います。 
2. クラス AccountPlan の WSDL を作成します。これを OrgB.wsdl と呼びます。
3. 組織 A で、OrgB.wsdl を使用して WSDL2Apex クラス soapSforceComSchemasClassAccplan を作成します。
4. 組織 A を追加し、https://OrgBInstance.salesforce.com/services/Soap/class/AccountPlan をリモートサイト設定に追加します。 
5. 組織 A で REST コールを開始する REST クラス CallAccountPlan を作成します。
 
@RestResource(urlMapping='/createAccountPlan/*')
global with sharing class CallAccountPlan{
    
    @HttpGet
    global static String doGet(){
        soapSforceComSchemasClassAccplan.AccountPlan stub = new soapSforceComSchemasClassAccplan.AccountPlan();
        stub.SessionHeader = new soapSforceComSchemasClassAccplan.SessionHeader_element();
        stub.SessionHeader.sessionId = Session Id;
        return stub.createAccountPlan();
        }
}

6. ワークベンチで REST エクスプローラから GET コール /services/apexrest/createAccountPlan/ を行います。
7. 次のエラーメッセージが表示されます: System.CalloutException: Web service callout failed: WebService returned a SOAP Fault: (Web サービスのコールアウトに失敗しました: Web サービスから SOAP Fault が返されました)System.CalloutException: Callout loop not allowed (コールアウトループは許可されません)


これは、組織 A からのコールアウト開始時に組織 B がコールアウトを行ったためです。 

ナレッジ記事番号

000387966

 
読み込み中
Salesforce Help | Article