コールアウトエンドポイントとしての指定ログイン情報
指定ログイン情報では、1 つの定義にコールアウトエンドポイントの URL と必要な認証パラメータを指定します。Apex コールアウトで指定ログイン情報をコールアウトエンドポイントとして指定するすべての認証が Salesforce によって管理されるため、コードでこれらを行う必要はありません。外部サイトへのコールアウトに必要なリモートサイト設定もスキップできます。
エンドポイント URL と認証をコールアウト定義から切り離すことで、指定ログイン情報でコールアウトを簡単に管理できます。たとえば、エンドポイント URL が変更された場合も、指定ログイン情報を更新するだけです。その指定ログイン情報を参照するすべてのコールアウトは、引き続き機能します。
複数の組織がある場合、各組織に同じ名前でエンドポイント URL が異なる指定ログイン情報を作成できます。これにより、それらの指定ログイン情報の共有名を参照するコールアウト定義を 1 つだけパッケージして (すべての組織で) リリースできます。たとえば、各組織の指定ログイン情報に異なるエンドポイント URL を指定して、開発環境と本番環境の違いに対応することができます。Apex コールアウトでそれらの指定ログイン情報の共有名が指定されている場合、コールアウトを定義する Apex クラスをパッケージ化して、プログラムで環境をチェックすることなく、すべての組織にリリースできます。
例
次の Apex コードでは、指定ログイン情報と追加されたパスによってコールアウトのエンドポイントが指定されます。
参照される指定ログイン情報では、エンドポイント URL と認証設定が指定されます。
コールアウトエンドポイントを指定ログイン情報ではなく URL としてコーディングできますが、コードで認証を処理する必要があります。この��では、基本的なパスワード認証を使用していますが、OAuth 認証ははるかに複雑であるため、指定ログイン情報の使用事例を使用することをお勧めします。
1HttpRequest req = new HttpRequest();
2req.setEndpoint('callout:My_Named_Credential/some_path');
3req.setMethod('GET');
4Http http = new Http();
5HTTPResponse res = http.send(req);
6System.debug(res.getBody());
コールアウトエンドポイントを指定ログイン情報ではなく URL としてコーディングできますが、コードで認証を処理する必要があります。この��では、基本的なパスワード認証を使用していますが、OAuth 認証ははるかに複雑であるため、指定ログイン情報の使用事例を使用することをお勧めします。1HttpRequest req = new HttpRequest();
2req.setEndpoint('https://my_endpoint.example.com/some_path');
3req.setMethod('GET');
4
5// Because we didn't set the endpoint as a named credential,
6// our code has to specify:
7// - The required username and password to access the endpoint
8// - The header and header information
9
10String username = 'myname';
11String password = 'mypwd';
12
13Blob headerValue = Blob.valueOf(username + ':' + password);
14String authorizationHeader = 'BASIC ' +
15EncodingUtil.base64Encode(headerValue);
16req.setHeader('Authorization', authorizationHeader);
17
18// Create a new http object to send the request object
19// A response object is generated as a result of the request
20
21Http http = new Http();
22HTTPResponse res = http.send(req);
23System.debug(res.getBody());