Request
ページがネットワークリソースのリクエストを送信するたびに、Pageによって次のイベントシーケンスが発行されます。
- Page.onRequest(handler) ページによってリクエストが発行されたときに発行されます。
- Page.onResponse(handler) リクエストに対するレスポンスステータスとヘッダーが受信されたとき、または受信された場合に発行されます。
- Page.onRequestFinished(handler) レスポンスボディがダウンロードされ、リクエストが完了したときに発行されます。
リクエストが途中で失敗した場合、'requestfinished'
イベント(および場合によっては'response'イベントの代わりに)、Page.onRequestFailed(handler)イベントが発行されます。
404 や 503 などの HTTP エラーレスポンスは、HTTP の観点からは依然として成功したレスポンスであるため、リクエストは 'requestfinished'
イベントで完了します。
リクエストが 'redirect' レスポンスを受け取った場合、リクエストは requestfinished
イベントで正常に完了し、リダイレクトされた URL に新しいリクエストが発行されます。
メソッド
allHeaders
追加バージョン: v1.15このリクエストに関連付けられたすべてのリクエスト HTTP ヘッダーを持つオブジェクト。ヘッダー名は小文字です。
使用例
Request.allHeaders();
戻り値
failure
v1.9より前に追加このメソッドは、requestfailed
イベントで報告されているように、このリクエストが失敗した場合を除き、null
を返します。
使用例
失敗したすべてのリクエストのログ出力例
page.onRequestFailed(request -> {
System.out.println(request.url() + " " + request.failure());
});
戻り値
frame
v1.9より前に追加このリクエストを開始したFrameを返します。
使用例
String frameUrl = request.frame().url();
戻り値
詳細
場合によってはフレームが利用できず、このメソッドが例外をスローすることに注意してください。
- リクエストが Service Worker で発生した場合。
request.serviceWorker()
を使用して確認できます。 - ナビゲーションリクエストが、対応するフレームが作成される前に発行された場合。Request.isNavigationRequest() を使用して確認できます。
すべてのケースを処理する例を次に示します。
headerValue
追加バージョン: v1.15名前が一致するヘッダーの値を返します。名前は大文字と小文字を区別しません。
使用例
Request.headerValue(name);
引数
戻り値
headers
v1.9より前に追加リクエスト HTTP ヘッダーを持つオブジェクト。ヘッダー名は小文字です。このメソッドは、cookie 関連のものを含むセキュリティ関連のヘッダーを返さないことに注意してください。cookie
情報を含むヘッダーの完全なリストについては、Request.allHeaders() を使用できます。
使用例
Request.headers();
戻り値
headersArray
追加バージョン: v1.15このリクエストに関連付けられたすべてのリクエスト HTTP ヘッダーを持つ配列。Request.allHeaders()とは異なり、ヘッダー名は大文字と小文字が区別されます。Set-Cookie
など、複数のエントリを持つヘッダーは、配列に複数回表示されます。
使用例
Request.headersArray();
戻り値
isNavigationRequest
v1.9より前に追加このリクエストがフレームのナビゲーションを駆動しているかどうか。
一部のナビゲーションリクエストは、対応するフレームが作成される前に発行されるため、Request.frame() は利用できません。
使用例
Request.isNavigationRequest();
戻り値
method
v1.9より前に追加リクエストのメソッド(GET、POSTなど)
使用例
Request.method();
戻り値
postData
v1.9より前に追加リクエストのポストボディ(もしあれば)。
使用例
Request.postData();
戻り値
postDataBuffer
v1.9より前に追加リクエストのポストボディをバイナリ形式で(もしあれば)。
使用例
Request.postDataBuffer();
戻り値
redirectedFrom
v1.9より前に追加サーバーによってこのリクエストにリダイレクトされたリクエスト(もしあれば)。
サーバーがリダイレクトで応答すると、Playwright は新しい Request オブジェクトを作成します。2つのリクエストは、redirectedFrom()
および redirectedTo()
メソッドによって接続されます。複数のサーバーリダイレクトが発生した場合、redirectedFrom()
を繰り返し呼び出すことで、リダイレクトチェーン全体を構築できます。
使用例
たとえば、ウェブサイト http://example.com
が https://example.com
にリダイレクトする場合
Response response = page.navigate("http://example.com");
System.out.println(response.request().redirectedFrom().url()); // "http://example.com"
ウェブサイト https://google.com
にリダイレクトがない場合
Response response = page.navigate("https://google.com");
System.out.println(response.request().redirectedFrom()); // null
戻り値
redirectedTo
v1.9より前に追加サーバーがリダイレクトで応答した場合にブラウザーによって発行される新しいリクエスト。
使用例
このメソッドは、Request.redirectedFrom() の反対です。
System.out.println(request.redirectedFrom().redirectedTo() == request); // true
戻り値
resourceType
v1.9より前に追加レンダリングエンジンによって認識されたリクエストのリソースタイプが含まれています。ResourceType は、document
、stylesheet
、image
、media
、font
、script
、texttrack
、xhr
、fetch
、eventsource
、websocket
、manifest
、other
のいずれかになります。
使用例
Request.resourceType();
戻り値
response
v1.9より前に追加一致する Response オブジェクトを返します。エラーによりレスポンスが受信されなかった場合は null
を返します。
使用例
Request.response();
戻り値
sizes
追加バージョン: v1.15指定されたリクエストのリソースサイズ情報を返します。
使用例
Request.sizes();
戻り値
- Sizes#
-
requestBodySize
intリクエストボディのサイズ(POSTデータペイロード)をバイト単位で示します。ボディがない場合は 0 に設定されます。
-
requestHeadersSize
intHTTP リクエストメッセージの開始から、ボディの前の二重 CRLF まで(および二重 CRLF を含む)の合計バイト数。
-
responseBodySize
int受信したレスポンスボディのサイズ(エンコード済み)をバイト単位で示します。
-
responseHeadersSize
intHTTP レスポンスメッセージの開始から、ボディの前の二重 CRLF まで(および二重 CRLF を含む)の合計バイト数。
-
timing
v1.9より前に追加指定されたリクエストのリソースタイミング情報を返します。タイミング値のほとんどはレスポンス時に利用可能になり、responseEnd
はリクエストが完了すると利用可能になります。詳細については、Resource Timing API を参照してください。
使用例
page.onRequestFinished(request -> {
Timing timing = request.timing();
System.out.println(timing.responseEnd - timing.startTime);
});
page.navigate("http://example.com");
戻り値
- Timing#
-
startTime
double1970年1月1日 00:00:00 UTC から経過したミリ秒単位のリクエスト開始時間
-
domainLookupStart
doubleブラウザーがリソースのドメイン名ルックアップを開始する直前の時間。値は
startTime
を基準としたミリ秒単位で指定され、利用できない場合は -1 です。 -
domainLookupEnd
doubleブラウザーがリソースのドメイン名ルックアップを開始した直後の時間。値は
startTime
を基準としたミリ秒単位で指定され、利用できない場合は -1 です。 -
connectStart
doubleユーザーエージェントがリソースを取得するためにサーバーへの接続を確立し始める直前の時間。値は
startTime
を基準としたミリ秒単位で指定され、利用できない場合は -1 です。 -
secureConnectionStart
doubleブラウザーが現在の接続を保護するためのハンドシェイクプロセスを開始する直前の時間。値は
startTime
を基準としたミリ秒単位で指定され、利用できない場合は -1 です。 -
connectEnd
doubleユーザーエージェントがリソースを取得するためにサーバーへの接続を確立し始める直前の時間。値は
startTime
を基準としたミリ秒単位で指定され、利用できない場合は -1 です。 -
requestStart
doubleブラウザーがサーバー、キャッシュ、またはローカルリソースからのリソースのリクエストを開始する直前の時間。値は
startTime
を基準としたミリ秒単位で指定され、利用できない場合は -1 です。 -
responseStart
doubleブラウザーがサーバー、キャッシュ、またはローカルリソースからレスポンスの最初のバイトを受信した直後の時間。値は
startTime
を基準としたミリ秒単位で指定され、利用できない場合は -1 です。 -
responseEnd
doubleブラウザーがリソースの最後のバイトを受信した直後、またはトランスポート接続が閉じられる直前のいずれか早い方の時間。値は
startTime
を基準としたミリ秒単位で指定され、利用できない場合は -1 です。
-
url
v1.9より前に追加リクエストの URL。
使用例
Request.url();
戻り値