continueRequest method

Future<void> continueRequest({
  1. String? url,
  2. String? method,
  3. String? postData,
  4. Map<String, String>? headers,
})

Continues request with optional request overrides. To use this, request interception should be enabled with page.setRequestInterception. Exception is immediately thrown if the request interception is not enabled.

await page.setRequestInterception(true);
page.onRequest.listen((request) {
  // Override headers
  var headers = Map<String, String>.from(request.headers)
    ..['foo'] = 'bar'
    ..remove('origin');
  request.continueRequest(headers: headers);
});

Parameters:

  • url: If set, the request url will be changed. This is not a redirect. The request will be silently forwarded to the new url. For example, the address bar will show the original url.
  • method: If set changes the request method (e.g. GET or POST)
  • postData: If set changes the post data of request
  • headers: If set changes the request HTTP headers

Implementation

Future<void> continueRequest(
    {String? url,
    String? method,
    String? postData,
    Map<String, String>? headers}) async {
  // Request interception is not supported for data: urls.
  if (this.url.startsWith('data:')) return;
  assert(allowInterception, 'Request Interception is not enabled!');
  assert(!_interceptionHandled, 'Request is already handled!');
  _interceptionHandled = true;

  var postDataBinaryBase64 =
      postData != null ? base64Encode(utf8.encode(postData)) : null;

  await _fetchApi
      .continueRequest(fetch.RequestId(interceptionId!),
          url: url,
          method: method,
          postData: postDataBinaryBase64,
          headers: headers?.entries
              .map((e) => fetch.HeaderEntry(name: e.key, value: e.value))
              .toList())
      .catchError((error) {
    // In certain cases, protocol will return error if the request was already canceled
    // or the page was closed. We should tolerate these errors.
    _logger.finer('[Request.continueRequest] swallow error: $error');
  });
}