You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中使用flutter_inappwebview如何获取跳转后POST请求的响应参数

flutter_inappwebview获取POST导航请求响应参数说明

支持情况说明

该需求完全被flutter_inappwebview库支持,5.0.0及以上的稳定版本都提供了原生的回调能力可以直接获取包括POST在内的所有请求响应参数。

具体实现方式

你可以通过InAppWebView组件提供的onLoadResourceResponse回调实现需求,该回调会在WebView触发任何资源加载请求完成后触发,实现步骤如下:

  • 优先过滤页面主导航请求:通过response.resourceType == ResourceType.MAIN_FRAME条件,筛选出用户页面跳转对应的主请求,排除静态资源、异步接口等其他请求
  • 过滤POST请求:通过response.request?.method == "POST"条件,只匹配你需要的POST请求
  • 直接读取响应参数:回调返回的response对象包含你需要的所有响应信息:
    • 响应头:response.headers,返回Map格式的键值对
    • 响应状态码:response.statusCode
    • 响应内容长度:response.contentLength
    • 响应MIME类型:response.contentType

示例代码

InAppWebView(
  initialUrlRequest: URLRequest(url: WebUri("https://你的目标页面地址")),
  onLoadResourceResponse: (controller, response) async {
    // 筛选页面跳转的POST请求
    if (response.resourceType == ResourceType.MAIN_FRAME 
        && response.request?.method == "POST") {
      // 读取响应头
      Map<String, String>? respHeaders = response.headers;
      // 读取状态码
      int? respStatusCode = response.statusCode;
      // 此处添加你的业务逻辑
      print("页面跳转POST响应头:$respHeaders");
      print("页面跳转POST响应状态码:$respStatusCode");
    }
  },
)

额外注意事项

  • 如果你需要获取POST请求的响应体内容,需要先在InAppWebViewSettings中开启useOnLoadResourceResponseWithBody: true配置,再通过onLoadResourceResponseWithBody回调即可拿到响应体的字节数据
  • Android 7.0以下系统对POST请求的响应捕获存在部分系统级限制,建议在Android 7.0及以上版本使用该功能
  • 如果你需要捕获WebView内部发起的异步POST接口请求而非页面跳转的主请求,去掉ResourceType.MAIN_FRAME的过滤条件即可

内容的提问来源于stack exchange,提问作者Cosmin Vacaru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:06:03