Я использую webview во Flutter и изо всех сил пытаюсь просмотреть заголовки URL-запроса. Глядя на документацию webview_flutter, заголовки кажутся доступными через класс WebViewRequest, но я не вижу, чтобы они поступали через какие-либо методы делегата. На основе URL-адреса запроса я хотел бы просмотреть заголовки и на основе комбинации URL-адреса и заголовка выполнить определенные действия в моем приложении.
Я реализовал контроллер webview и не вижу WebViewRequest как свойства, доступного в любом из методов делегата.
Моя реализация веб-просмотра для справки:
child: WebView(
initialUrl: null,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController w) {
_webViewController = w;
_webViewController.loadUrl(loginRequestUrl);
},
navigationDelegate: this._interceptNavigation,
onPageStarted: (url) {
// If URL is <login redirect URL> Check headers for success callback
// If we have success, call mobile API with token and close webview
print('Started Loading URL:');
print(url);
},
onPageFinished: (finish) {
// Reading response on finish
// If URL is <authenticated in app url> we've missed the success callback and webview is loading web-facing product
print('Finished Loading URL:');
print(finish);
},
),
Вместо этого вы можете использовать InAppWebView вот так:
InAppWebView(
initialUrlRequest:
URLRequest(url: Uri.parse("https://stackoverflow.com")),
initialOptions: InAppWebViewGroupOptions(
crossPlatform:
InAppWebViewOptions(useShouldOverrideUrlLoading: true),
android: AndroidInAppWebViewOptions(
useHybridComposition: true,
),
),
shouldOverrideUrlLoading: (controller, navigationAction) async {
var request = navigationAction.request;
var url = request.url;
if (request.headers != null) {
print('see header');
return NavigationActionPolicy.ALLOW;
}
return NavigationActionPolicy.ALLOW;
},
)