この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

URL クラス

URL (Uniform Resource Locator) を表し、URL の一部へのアクセスを提供します。Salesforce 組織へのアクセスに使用されるベース URL にアクセスできるようにします。

名前空間

System

使用方法

組織内のオブジェクトへのリンクを作成するには、System.URL クラスのメソッドを使用します。これらのオブジェクトは、外部メール、活動、または Chatter 投稿に組み込むファイル、画像、ロゴ、レコードがあります。たとえば、Salesforce の基本 URL にファイル ID を連結することによって、Chatter 投稿への添付ファイルとしてアップロードされたファイルへのリンクを作成できます。
1// Get a file uploaded through Chatter.
2ContentDocument doc = [SELECT Id FROM ContentDocument 
3          WHERE Title = 'myfile'];
4// Create a link to the file.
5String fullFileURL = URL.getOrgDomainURL().toExternalForm() +
6   '/' + doc.id;
7system.debug(fullFileURL);
次の例では、Salesforce レコードへのリンクを作成します。Salesforce の基本 URL とレコード ID が連結されて完全な URL が作成されます。
1Account acct = [SELECT Id FROM Account WHERE Name = 'Acme' LIMIT 1];
2String fullRecordURL = URL.getOrgDomainURL().toExternalForm() + '/' + acct.Id;

この例では、現在の Salesforce サーバーインスタンスの基本 URL と完全要求 URL が取得されます。次に、特定の取引先オブジェクトを指定する URL が作成されます。最後に、基本 URL と完全 URL のコンポーネントが取得されます。この例では、すべての結果がデバッグログに出力されます。
1// Create a new account called Acme that we will create a link for later.
2Account myAccount = new Account(Name='Acme');
3insert myAccount;
4
5// Get the base URL.
6String sfdcBaseURL = URL.getOrgDomainURL().toExternalForm();
7System.debug('Base URL: ' + sfdcBaseURL );       
8
9// Get the URL for the current request.
10String currentRequestURL = URL.getCurrentRequestUrl().toExternalForm();
11System.debug('Current request URL: ' + currentRequestURL);        
12
13// Create the account URL from the base URL.
14String accountURL = URL.getOrgDomainURL().toExternalForm() + 
15                       '/' + myAccount.Id;
16System.debug('URL of a particular account: ' + accountURL); 
17
18// Get some parts of the base URL.
19System.debug('Host: ' + URL.getOrgDomainURL().getHost());   
20System.debug('Protocol: ' + URL.getOrgDomainURL().getProtocol());
21
22// Get the query string of the current request.
23System.debug('Query: ' + URL.getCurrentRequestUrl().getQuery());

バージョン管理動作の変更

API バージョン 41.0 以降、Apex URL オブジェクトは java.net.URL 型ではなく java.net.URI 型によって表されます。URL オブジェクトがインスタンス化された API バージョンによって、特定のインスタンスへの後続のメソッドコールの動作が決まります。複雑な URL 構造のエッジケースを適切に処理できる RFC 完全互換の URL 解析のために API 41.0 以降のバージョンを使用することを強くお勧めします。また、API 41.0 以降のバージョンでは、入力が有効な RFC 互換 URL または URI 文字列であることが強制されます。

URL のコンストラクター

URL のコンストラクターは次のとおりです。

Url(spec)

URL の指定した文字列表現を使用して、URL クラスの新しいインスタンスを作成します。

署名

public Url(String spec)

パラメーター

spec
型: String
URL として解析する文字列。

Url(context, spec)

指定されたコンテキスト内で指定された spec を解析して、URL クラスの新しいインスタンスを作成します。

署名

public Url(Url context, String spec)

パラメーター

context
型: URL
仕様を解析する条件となるコンテキスト。
spec
型: String
URL として解析する文字列。

使用方法

RFC2396 の「Uniform Resource Identifiers : Generic * Syntax」で説明されているように、新しい URL が、指定されたコンテキスト URL および spec 引数から作成されます。
1<scheme>://<authority><path>?<query>#<fragment>

このコンストラクターの引数についての詳細は、Java のそれぞれの URL(java.net.URL, java.lang.String) コンストラクターを参照してください。

Url(protocol, host, file)

指定されたプロトコル、ホスト、およびそのホストのファイルを使用して、URL クラスの新しいインスタンスを作成します。指定されたプロトコルのデフォルトのポートが使用されます。

署名

public Url(String protocol, String host, String file)

パラメーター

protocol
型: String
この URL のプロトコル名。
host
型: String
この URL のホスト名。
file
型: String
この URL のファイル名。

Url(protocol, host, port, file)

指定されたプロトコル、ホスト、ポート、およびそのホストのファイルを使用して、URL クラスの新しいインスタンスを作成します。

署名

public Url(String protocol, String host, Integer port, String file)

パラメーター

protocol
型: String
この URL のプロトコル名。
host
型: String
この URL のホスト名。
port
型: Integer
この URL のポート番号。
file
型: String
この URL のファイル名。

URL のメソッド

URL のメソッドは次のとおりです。

getAuthority()

現在の URL の権限部分を返します。

署名

public String getAuthority()

戻り値

型: String

getCurrentRequestUrl()

Salesforce インスタンスでの要求全体の URL を返します。

署名

public static System.URL getCurrentRequestUrl()

戻り値

型: System.URL

使用方法

要求全体の URL の例は、https://yourInstance.salesforce.com/apex/myVfPage.apexp です。

getDefaultPort()

現在の URL に関連付けられたプロトコルのデフォルトのポート番号を返します。

署名

public Integer getDefaultPort()

戻り値

型: Integer

使用方法

URL の URL スキームまたはストリームプロトコルハンドラーにデフォルトのポート番号が定義されていない場合、-1 を返します。

getFile()

現在の URL のファイル名を返します。

署名

public String getFile()

戻り値

型: String

getFileFieldURL(entityId, fieldName)

添付ファイルのダウンロード URL を返します。

署名

public static String getFileFieldURL(String entityId, String fieldName)

パラメーター

entityId
型: String
ファイルデータを保持するエンティティの ID を指定します。
fieldName
型: String
AttachmentBody などのファイル項目コンポーネントの API 名を指定します。

戻り値

型: String

使用方法

例:

1String fileURL = 
2  URL.getFileFieldURL(
3    '087000000000123' ,
4    'AttachmentBody');

getHost()

現在の URL のホスト名を返します。

署名

public String getHost()

戻り値

型: String

getOrgDomainUrl()

組織の正規 URL を返します。たとえば、「https://MyDomainName.my.salesforce.com」のようになります。

署名

public static System.Url getOrgDomainUrl()

戻り値

型: System.URL

getOrgDomainUrl() は、コンテキストに関係なく、常に組織のログイン URL を返します。組織への API コールを行うときには、その URL を使用します。

使用方法

getOrgDomainUrl() を使用して、API コードで Salesforce の REST API と SOAP API を操作します。選択リスト値セットとカスタム項目の作成やカスタマイズなどで、ユーザーインターフェース API コールのエンドポイントを取得します。

getOrgDomainUrl() は、Apex コードが実行されている組織のドメイン URL にのみアクセスできます。

このメソッドで取得したドメイン URL を使用して Salesforce API を操作するのに、組織の RemoteSiteSetting は不要です。

この例では、Salesforce REST API を使用して、組織の制限値が取得されます。詳細は、『REST API 開発者ガイド』の「制限」を参照してください。

1Http h = new Http();
2HttpRequest req = new HttpRequest();  
3req.setEndpoint(Url.getOrgDomainUrl().toExternalForm()
4   + '/services/data/v44.0/limits');
5req.setMethod('GET');
6req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
7HttpResponse res = h.send(req);

getPath()

現在の URL のパス部分を返します。

署名

public String getPath()

戻り値

型: String

getPort()

現在の URL のポートを返します。

署名

public Integer getPort()

戻り値

型: Integer

getProtocol()

現在の URL のプロトコル名 (https など) を返します。

署名

public String getProtocol()

戻り値

型: String

getQuery()

現在の URL のクエリ部分を返します。

署名

public String getQuery()

戻り値

型: String

使用方法

クエリ部分が存在しない場合は、null を返します。

getRef()

現在の URL のアンカーを返します。

署名

public String getRef()

戻り値

型: String

使用方法

クエリ部分が存在しない場合は、null を返します。

getSalesforceBaseUrl()

API バージョン 59.0 以前では、このメソッドは非推奨で、廃止されています。getOrgDomainUrl() を使用して組織の正規 URL を取得するか、getCurrentRequestUrl() を使用して Salesforce インスタンスでの要求全体の URL を取��します。Salesforce 組織への現在の接続の URL を返します。

署名

public static System.URL getSalesforceBaseUrl()

戻り値

型: System.URL

現在の接続の URL を返します。たとえば、https://MyDomainName.my.salesforce.comhttps://MyDomainName.lightning.force.com のような値です。

getUserInfo()

現在の URL の UserInfo 部分を取得します。

署名

public String getUserInfo()

戻り値

型: String

使用方法

UserInfo 部分が存在しない場合は null を返します。

sameFile(URLToCompare)

フラグメントコンポーネントを除き、現在の URL と指定した URL オブジェクトを比較します。

署名

public Boolean sameFile(System.URL URLToCompare)

パラメーター

URLToCompare
型: System.URL

戻り値

型: Boolean

両方の URL オブジェクトが同じリモートリソースを参照する場合は true、そうでない場合は false を返します。

使用方法

URI とフラグメントコンポーネントの構文についての詳細は、「RFC3986」を参照してください。

toExternalForm()

現在の URL を文字列表現で返します。

署名

public String toExternalForm()

戻り値

型: String