HttpRequest クラス

GET、POST、PATCH、PUT、および DELETE のような HTTP 要求をプログラムで作成するには、HttpRequest クラスを使用します。

名前空間

System

使用方法

HttpRequest で作成されたリクエストボディ内の XML または JSON コンテンツを解析するには、XML クラスまたは JSON クラスを使用します。

次の例は、要求に認証ヘッダーを使用する方法と応答の処理を示しています。

1public class AuthCallout {
2 
3   public void basicAuthCallout(){
4     HttpRequest req = new HttpRequest();
5     req.setEndpoint('http://www.yahoo.com');
6     req.setMethod('GET');
7     
8     // Specify the required user name and password to access the endpoint
9     // As well as the header and header information
10 
11     String username = 'myname';
12     String password = 'mypwd';
13  
14     Blob headerValue = Blob.valueOf(username + ':' + password);
15     String authorizationHeader = 'Basic ' +
16     EncodingUtil.base64Encode(headerValue);
17     req.setHeader('Authorization', authorizationHeader);
18   
19     // Create a new http object to send the request object
20     // A response object is generated as a result of the request  
21  
22     Http http = new Http();
23     HTTPResponse res = http.send(req);
24     System.debug(res.getBody());
25   }
26}

エンドポイントを指定ログイン情報 URL として設定できます。指定ログイン情報 URL にはスキーム callout:、指定ログイン情報の名前、必要に応じて追加されたパスが含まれます。例: callout:My_Named_Credential/some_path。指定ログイン情報では、1 つの定義にコールアウトエンドポイントの URL と必要な認証パラメーターを指定します。Apex コールアウトで指定ログイン情報をコールアウトエンドポイントとして指定するすべての認証が Salesforce によって管理されるため、コードでこれらを行う必要はありません。「コールアウトエンドポイントとしての指定ログイン情報」を参照してください。

メモ

圧縮

送信するデータを圧縮するには、setCompressed を使用します。

1HttpRequest req = new HttpRequest();
2req.setEndPoint('my_endpoint');
3req.setCompressed(true);
4req.setBody('some post body');
5

応答が圧縮形式で返されると、getBody が形式を認識して展開し、展開された値を返します。

HttpRequest のコンストラクター

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

HttpRequest()

HttpRequest クラスの新しいインスタンスを作成します。

署名

public HttpRequest()

HttpRequest のメソッド

HttpRequest のメソッドは次のとおりです。すべてインスタンスメソッドです。

getBody()

このリクエストボディを取得します。

署名

public String getBody()

戻り値

型: String

getBodyAsBlob()

このリクエストボディを Blob として取得します。

署名

public Blob getBodyAsBlob()

戻り値

型: Blob

getBodyDocument()

このリクエストボディを DOM ドキュメントとして取得します。

署名

public Dom.Document getBodyDocument()

戻り値

型: Dom.Document

このメソッドを次のショートカットとして使用します。

1String xml = httpRequest.getBody();
2Dom.Document domDoc = new Dom.Document(xml);

getCompressed()

true の場合、リクエストボディは圧縮され、false の場合は圧縮されません。

署名

public Boolean getCompressed()

戻り値

型: Boolean

getEndpoint()

この要求の外部サーバーのエンドポイントの URL を取得します。

署名

public String getEndpoint()

戻り値

型: String

getHeader(key)

要求ヘッダーの内容を取得します。

署名

public String getHeader(String key)

パラメーター

key
型: String

戻り値

型: String

getMethod()

HttpRequest によって使用されるメソッドの種別を返します。

署名

public String getMethod()

戻り値

型: String

使用方法

次は、戻り値の例です。

  • DELETE
  • GET
  • HEAD
  • PATCH
  • POST
  • PUT
  • TRACE

setBody(body)

このリクエストボディの内容を設定します。

署名

public Void setBody(String body)

パラメーター

body
型: String

戻り値

型: Void

使用方法

制限: 同期 Apex の場合は 6 MB、非同期 Apex の場合は 12 MB。

HTTP 要求のサイズおよび応答のサイズは、ヒープサイズの合計に含まれます。

setBodyAsBlob(body)

Blob を使用して、このリクエストボディの内容を設定します。

署名

public Void setBodyAsBlob(Blob body)

パラメーター

body
型: Blob

戻り値

型: Void

使用方法

制限: 同期 Apex の場合は 6 MB、非同期 Apex の場合は 12 MB。

HTTP 要求のサイズおよび応答のサイズは、ヒープサイズの合計に含まれます。

setBodyDocument(document)

このリクエストボディの内容を設定します。内容は DOM ドキュメントを表します。

署名

public Void setBodyDocument(Dom.Document document)

パラメーター

document
型: Dom.Document

戻り値

型: Void

使用方法

制限: 同期 Apex の場合は 6 MB、非同期 Apex の場合は 12 MB。

setClientCertificate(clientCert, password)

このメソッドは非推奨です。代わりに、setClientCertificateName を使用してください。

署名

public Void setClientCertificate(String clientCert, String password)

パラメーター

clientCert
型: String
password
型: String

戻り値

型: Void

使用方法

サーバーが認証用のクライアント証明書を要求する場合、クライアント証明書 PKCS12 キーストアとパスワードを設定します。

setClientCertificateName(certDevName)

外部サービスに認証用のクライアント証明書が必要な場合、証明書の名前を設定します。

署名

public Void setClientCertificateName(String certDevName)

パラメーター

certDevName
型: String

戻り値

型: Void

使用方法

「HTTP 要求での証明書の使用」を参照してください。

setCompressed(flag)

true の場合、本文内のデータは gzip 圧縮形式でエンドポイントに配信されます。false の場合、非圧縮形式が使用されます。

署名

public Void setCompressed(Boolean flag)

パラメーター

flag
型: Boolean

戻り値

型: Void

setEndpoint(endpoint)

この要求のエンドポイントを指定します。

署名

public Void setEndpoint(String endpoint)

パラメーター

endpoint
型: String
エンドポイントに対して可能な値は、次のとおりです。
  • エンドポイント URL
    1https://my_endpoint.example.com/some_path
  • 指定ログイン情報 URL (スキーム callout、指定ログイン情報の名前、必要に応じて追加されたパスを含む)
    1callout:My_Named_Credential/some_path

戻り値

型: Void

setHeader(key, value)

要求ヘッダーの内容を設定します。

署名

public Void setHeader(String key, String value)

パラメーター

key
型: String
value
型: String

戻り値

型: Void

使用方法

制限 100 KB。

setMethod(method)

HTTP 要求によって使用されるメソッドの種別を設定します。

署名

public Void setMethod(String method)

パラメーター

method
型: String
このメソッドの種別の可能な値には、次のものがあります。
  • DELETE
  • GET
  • HEAD
  • PATCH
  • POST
  • PUT
  • TRACE

戻り値

型: Void

使用方法

このメソッドは要求オプションの設定にも使用できます。

setTimeout(timeout)

要求のタイムアウトを 1 ~ 120,000 ミリ秒の間で設定します。このタイムアウトは HTTP 接続が確立されるまでの最大待機時間です。同じタイムアウトは、要求が開始されるまでの待機にも適用されます。データを取得または投稿しているときなど、要求が実行されているときは、接続は要求が完了するまで維持されます。

署名

public Void setTimeout(Integer timeout)

パラメーター

timeout
型: Integer

戻り値

型: Void

toString()

この要求の外部サーバーのエンドポイントの URL と、使用されるメソッドが含まれる文字列を返します。次に例を示します。Endpoint=http://YourServer, Method=POST

署名

public String toString()

戻り値

型: String