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

Newer Version Available

This content describes an older version of this product. View Latest

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.getSalesforceBaseUrl().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.getSalesforceBaseUrl().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.getSalesforceBaseUrl().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.getSalesforceBaseUrl().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.getSalesforceBaseUrl().getHost());   
20System.debug('Protocol: ' + URL.getSalesforceBaseUrl().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://yourDomain.my.salesforce.com、または [私のドメイン] が無効な組織の場合は https://yourInstance.salesforce.com が返されます。

署名

public static System.Url getOrgDomainUrl()

戻り値

型: System.URL

getOrgDomainUrl() は、コンテキストに関係なく、組織の同じドメインを返します。このメソッドを使用して、Lightning Experience と Salesforce Classic の両方で機能するか、組織への 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()

Salesforce インスタンスの URL を返します。

署名

public static System.URL getSalesforceBaseUrl()

戻り値

型: System.URL

現在の接続のホスト名を返します (例: https://MyDomainName.my.salesforce.comhttps://MyDomainName.lightning.force.com。または [私のドメイン] が無効な組織の場合は https://yourInstance.salesforce.comhttps://yourInstance.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