SAP資格過去問ならSAPnavi

NoteやStripe決済で安全にSAP過去問を購入することができます。
領収書発行可能 / 即時入手可能

SAP過去問 (SAP Exam)

Creating the HTTP Client

意味

RESTサーバーへの接続はHTTPを介して行われるため、ABAPでHTTP通信を実行するには、タイプCL_HTTP_CLIENTのインスタンスを作成する必要があります。作成されたオブジェクトは、RESTクライアント自体を構築するための入力であり、HTTP通信を処理します。

タイプCL_HTTP_CLIENTのオブジェクトを作成するには、次の2つのオプションがあります。

  • 宛先による作成:HTTP宛先はSM59トランザクションで事前に作成され、RESTサービスアクセスの認証とサービスURIに関する情報が保存されます。

    この場合、ファクトリメソッドCL_HTTP_CLIENT => CREATE_BY_DESTINATIONを使用して、ABAPHTTPオブジェクトをインスタンス化します。

  • URLで作成:必要なすべての接続データは、オブジェクトの構築時に指定されます。つまり、宛先へのリンクはありません。

    この場合、ファクトリメソッドCL_HTTP_CLIENT => CREATE_BY_URLを使用して、ABAPHTTPオブジェクトをインスタンス化します。

例:

このコードフラグメントは、CL_HTTP_CLIENT => CREATE_BY_URLを介してHTTPクライアントを作成し、認証情報を設定します。

            ...  data:        lo_http_client type ref to if_http_client.  cl_http_client=>create_by_url(    exporting      url                = 'http://server.company.com:4711/sap/bc/rest_cars/'    importing      client             = lo_http_client    exceptions      argument_not_found = 1      plugin_not_active  = 2      internal_error     = 3      others             = 4 ).  if sy-subrc <> 0.    " error handling  endif.  lo_http_client->authenticate( username = 'MY_SAP_USER' password = 'secret' ).  lo_http_client->propertytype_accept_cookie = if_http_client=>co_enabled.  lo_http_client->request->set_header_field( name  = if_http_form_fields_sap=>sap_client value = '100' )....         

  • RESTサーバーのベースURIは、構築時に指定されます。このURIパスは、対応するか、ICFノードパス(トランザクションSICFを介して作成された)の一部である必要があります。返されたHTTPクライアントオブジェクトは、RESTクライアント内で使用されます。

  • ABAPシステムでは常にユーザーコンテキストが必要であるため、ユーザーアカウントデータはAUTHENTICATEメソッドを介して指定されます。これは、呼び出されたURIのICFノードでユーザーアカウントが指定されているパブリックサービスを呼び出す場合にのみ省略できます。このような公共サービスにはいくつかの欠点があることに注意してください(サービス拒否攻撃、CSRFトークン保護が不可能など)。

  • SAPクライアントは、ヘッダ項目sap-client(パブリック定数IF_HTTP_FORM_FIELDS_SAP => SAP_CLIENT)で指定されます。これは、URIクエリパラメータの代替です。ap-client = xxx(例: http:// myserver:4711 / sap / bc / rest_cars?sap-client = 100)。HTTPヘッダー設定は、URLクエリパラメーター設定を無効にします。もう1つの方法は、対応するICFノードの1つにクライアントを設定することです。これは、最も柔軟性の低いアプローチです。

  • HTTPクライアントが後続の複数の呼び出しに再利用される場合、または基本認証(X509クライアント認証、SAMLなど)を使用していない場合は、属性を有効にしてABAPサーバーから返されたCookieを受け入れる必要があります。propertytype_accept_cookie指定されたコードでは、受信したログオンチケットが再利用されるため、呼び出しごとにクライアントを認証する必要はありません。後続のREST呼び出しでHTTPクライアントを再利用しない場合は、このCookieを設定する必要はありませんが、呼び出しごとにHTTPクライアントを再作成する必要があります。

属性の設定propertytype_accept_cookieABAPサーバーとのセッションがあることを意味するわけではありません(RESTサービスはステートレスです!)。これには、セッションCookieを設定する必要があります。ステートレス通信のREST原則と矛盾するため、HTTP接続を維持するセッション(RFC宛先(トランザクションSM59)またはHTTPヘッダーを介して設定)を使用しないでください。

タイトルとURLをコピーしました