GroovyHTTPアクセス

最終更新日: 20 年 2023 月 XNUMX 日

LogicMonitor Collectorには、Groovy内でのHTTPの使用を支援するためのヘルパーメソッドがいくつかあります。 Groovy / HTTPメソッドを使用して次のことを行う必要がある場合があります。

  • Webページからデータをフェッチし、結果を処理します
  • マルチステップのWebトランザクションを実行します。たとえば、XNUMXつのトランザクションで認証Cookieを取得し、そのCookieを使用して後続のトランザクションを認証します。

単一の Web ページからデータを取得するために DataSource を作成している場合は、次のようにして実行できることに注意してください。   ウェブページ収集メカニズム.

Groovyメソッドリファレンス

オブジェクトのインスタンス化

HTTP.open(host、port、[isSSL]) 複数のHTTPトランザクションで使用するためにHTTPセッションオブジェクトをインスタンス化します

  • 文字列 host –接続するホスト名
  • int型 ポート –接続するポート
  • ブール値 isSSL –SSLを使用するかどうか。 ポートが443でない限り、デフォルトはfalseです。
  • オブジェクトを返します httpクライアント httpClientオブジェクト 

オブジェクトメソッド

setAuthentication(user、pass) getメソッドとpostメソッドの基本認証の認証情報を設定します

  • 文字列 user –ユーザー名
  • 文字列 パス –パスワード
  • 収益 ヌル

setConnectTimeout(ミリ秒)最初のTCP接続の接続タイムアウトを設定します。 デフォルトはcollector.confファイルの設定です。

  • int型 ミリ秒 –ミリ秒単位の接続時間

setReadTimeout(ミリ秒)読み取りタイムアウト(要求を完了する時間)を設定します。デフォルトはcollector.confファイルの設定です。

  • int型 ミリ秒 –ミリ秒単位の読み取り時間

setFollowRedirect(follow) 通常、httpclientは透過的にリダイレクトに従います。 これをfalseに設定してフォローしないようにし、リダイレクトヘッダーを返すことができます。

  • ブール値   –リダイレクトに従うかどうか。 デフォルトはtrueです。

setHTTPProxy(host、port [、user、pass]) オブジェクトのgetおよびpostリクエストに使用するHTTPプロキシを指定します。 ユーザーとパスワードが資格情報とともに渡される場合は、BASIC認証方法のみをサポートします

  • 文字列 host –httpプロキシホスト
  • 整数 ポート –httpプロキシポート
  • オプションの文字列 user –httpプロキシユーザー名
  • オプションの文字列 パス –httpプロキシパスワード

get(url、[ヘッダー])  提供されたURLでHTTPGETを実行し、HTTP応答全体を返します

  • 文字列 URL –ターゲットURL
  • 任意 java.util.Map ヘッダーの ヘッダーのマップ(getでヘッダーを渡すことをサポートするにはコレクター25.100以降が必要です)
  • 戻り文字列 応答 HTTP応答全体

例: response=httpClient.get(url,[“受け入れる」:「テキスト/プレーン、テキスト/html]))

post(url、ペイロード、ヘッダー] 提供されたURLに対してHTTPPOSTを実行し、応答全体を返します

  • 文字列 URL –ターゲットURL
  • 文字列 ペイロード –ポストデータペイロード
  • 地図 ヘッダーの –XNUMXつ以上のHTTPPOSTヘッダーを含むマップ
  • 戻り文字列 応答 HTTP応答全体

getHeaders() 最後の呼び出しのHTTPヘッダーのみを返します

getHeader(文字列) 名前の付いた特定のヘッダーを返す 文字列 最後の電話から。 例 println httpClient.getHeader(“Set-Cookie”)

getResponseBody() 最後の呼び出しのHTTPボディのみを返す

getStatusCode() 最後の呼び出しのHTTPステータスコードのみをとして返します 整数.

getTimeStatistics()はXNUMXつの配列を返します 憧れるを含む 接続時間(TCPおよびHTTPSの確立を完了する時間–これはsetConnectTimeoutで設定された時間とは異なります)および最後の要求の読み取り時間(要求を完了するための合計時間)(ミリ秒単位)。

閉じる() HTTP オブジェクトを閉じて解放します。 そうしないと、コレクターがクリーンアップしてリソースを解放しますが、常にリソースを解放することをお勧めします 

    例–データをHTTP APIにPOSTし、応答をテストします

    この例では、サーバーに対してHTTP POSTを実行して、セッションを認証します。 セッションCookieは、同じHTTPオブジェクトを使用する後続のGET呼び出しで自動的に使用されます。

    // instantiate an http client object for the target system
    ip="mydevice.com"
    httpClient = HTTP.open(ip, 443);
    
    // use an authentication API call to initiate a session
    // specify the url to which we want to post
    url = "https://"+ip+"/api/v310/session/login";
    def payload = '{"username":"myusername","typeId":"com.tintri.api.rest.vcommon.dto.rbac.
        RestApiCredentials","password":"mypassword"}';
     
    // do the post
    def postResponse = httpClient.post(url, payload,["Content-Type":"application/json"]);
    // does the response indicate a successful authentication?
    if ( !(httpClient.getStatusCode() =~ /200/) ) 
    {
        // no -- report an error, and return a non-zero exit code
        println "authentication failure";
        return(1);
    }
    // we are now authenticated. Subsequent GETs with the httpClient will pass in the session cookie 
    url="https://"+ip+"/api/info";
    def getResponse=httpClient.get(url);
    // print some data
    println httpClient.getResponseBody();
    

    例:基本認証を使用して画像にアクセスし、取得の時間を計る

    import com.santaba.agent.groovyapi.http.*;
    
    // instantiate an http client object for the target system
    httpClient = HTTP.open("www.mysite.com",80);
    // set basic authentication credentials 
    httpClient.setAuthentication("myusername","mypassword");
    url = "https://www.mysite.com/httpgallery/authentication/authenticatedimage/figure1.gif";
    def getResponse=httpClient.get(url)
    headers=httpClient.getHeaders();
    println headers;
    times=httpClient.getTimeStatistics();
    println "Connect Time "+times[0];
    println "Read Time "+times[1];
    httpClient.close();
    return 0;
    記事上で