サポートセンターホーム


GroovyHTTPアクセス

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

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

単一のWebページからデータをプルするデータソースを作成している場合は、次の方法で実行できることに注意してください。 が待 ウェブページ収集メカニズム.

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、["受け入れる ":" text / plain、text / 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;

記事上で