この文章は 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