请求数据相关接口

采集 WebView 配置

采集 WebView 数据需设置 setDomStorageEnabled(true),还需调用 setWebViewClient() 方法,如嵌码 App 中未调用该方法,请添加以下内容

WebSettings webSettings = webview.getSettings();
webSettings.setDomStorageEnabled(true);
webview.setWebViewClient(new WebViewClient(){});
  • 自动注入 JS 探针

    开启自动注入 JS 探针,需在 SDK 初始化时调用 isHookWebChromeClient(true)。

    自动注入 JS 探针,SDK 会替换 WebChromeClient 为基调听云 SDK 的实现类,如遇到兼容性问题,请联系技术支持或改为手动注入 JS 探针方式。

    • 相关接口

        /**
         * @param isHookWebChromeClient 是否自动注入 JS 探针,默认 false
         */
        NBSAppAgent.isHookWebChromeClient(boolean isHookWebChromeClient)
      
    • 代码示例

        NBSAppAgent.setLicenseKey("AppKey")
        .setRedirectHost("Host") 
        .isHookWebChromeClient(true)// 开启自动注入 JS 探针 
        .start(this.getApplicationContext());
      
  • 手动注入 JS 探针

    • 相关接口

        /**
         * 采集 WebView 数据需在 WebChromeClient 的 onProgressChanged() 方法中调用本接口
         * @param view WebView 对象
         * @param newProgreess 加载进度
         */
        NBSWebChromeClient.initJSMonitor(view, newProgress);
      
    • 代码示例

        webview.setWebChromeClient(new WebChromeClient(){
            @Override
                public void onProgressChanged(WebView view, int newProgress) {
                    NBSWebChromeClient.initJSMonitor(view, newProgress);
                    super.onProgressChanged(view, newProgress);
                }
        });
      

采集 X5 WebView 配置

采集 WebView 数据需调用 setDomStorageEnabled() 和 setWebViewClient() 方法, 如嵌码 App 中未调用该方法,请添加以下内容

WebSettings webSettings = webview.getSettings();
webSettings.setDomStorageEnabled(true);
webview.setWebViewClient(new WebViewClient(){})
  • 自动注入JS探针

    开启自动注入 JS 探针,需在 SDK 初始化时调用 isHookWebChromeClient(true)。

    注意:自动注入 JS 探针,SDK 会替换 WebChromeClient 为基调听云 SDK 的实现类,如遇到兼容性问题,请联系技术支持或改为手动注入 JS 探针方式。

    • 相关接口

        /** 
         * @param isHookWebChromeClient 是否自动注入 JS 探针,默认 false 
         */ 
        NBSAppAgent.isHookWebChromeClient(boolean isHookWebChromeClient)
      
    • 代码示例

        NBSAppAgent.setLicenseKey("AppKey").setRedirectHost("Host")
        .isHookWebChromeClient(true)// 开启自动注入 JS 探针
        .start(this.getApplicationContext());
      
  • 手动注入 JS 探针

    • 相关接口

        /**
         * @param view X5 WebView 实例
         * @param newProgress 加载进度
         */
        NBSWebChromeX5Client.initJSMonitorX5(view, newProgress);
      
    • 代码示例

        webview.setWebChromeClient(new WebChromeClient(){
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                NBSWebChromeX5Client.initJSMonitorX5(view, newProgress);// 需设置 WebChromeClient 并在 onProgressChanged 方法中调用 initJSMonitorX5 方法
            }
        });
      
  • 添加 JsBridge

    说明:手动注入 JS 探针,还需要添加 JsBridge,自动注入 JS 探针忽略此配置。

    • 相关接口

        /**
         * @param x5WebView 为 X5 WebView 实例
         */
        NBSWebChromeX5Client.addWebViewBridge(WebView x5WebView);
      
    • 代码示例

        NBSWebChromeX5Client.addWebViewBridge(x5WebView);//生成 X5WebView 实例后调用
      

mpaas 内嵌 WebView 数据采集

可以通过此接口采集 mpaas 内嵌 WebView 数据。

  • 相关接口
/** 
* @param h5Page H5Page 对象
* @param apWebViewClient 若存在自定义的 APWebViewClient 实现类,传入该对象,否则传 null
* @param apWebChromeClient 若存在自定义的 APWebChromeClient 实现类,传入该对象,否则传 null
*/
NBSNebulaWebViewConfig.configWebView(H5Page h5Page, APWebViewClient apWebViewClient, APWebChromeClient apWebChromeClient);
  • 代码示例
MPNebula.getH5ViewAsync(this, param, new H5PageReadyListener() {
    @Override
    public void getH5Page(H5Page h5Page) {
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        // 不存在自定义的 APWebViewClient 或 APWebChromeClient 时,只需传入 h5Page 对象
            NBSNebulaWebViewConfig.configWebView(h5Page, null, null);

        mLayout.addView(h5Page.getContentView(), lp);
        }
    });

采集内容采集

调用该接口后,SDK 会采集 Http/Https 请求的请求头、响应头、请求体、响应体

当请求头中Content-Type值为application/json、application/x-www-form-urlencoded、text/plain时,会采集请求体。 当响应头中Content-Type值为application/json、text/plain时,会采集响应体。

  • 相关接口
/**
 * @param enabled 默认 false,设置 true,SDK 将采集请求内容
 */
enableNetworkContentRecord(boolean enabled)
  • 代码示例
NBSAppAgent.setLicenseKey("AppKey").setRedirectHost("Host")
.enableNetworkContentRecord(true)// 采集请求内容
.start(this.getApplicationContext());

自定义请求头/请求体采集

调用该接口后,可以自定义设置采集的请求头/请求体信息,调用多次则覆盖。

注:若平台和接口都配置请求头采集,接口配置优先。body 采集仅支持 okhttp3。

  • 相关接口
/**
 * @param headerCallBack 可以拦截 SDK 采集的网络 header 数据
 * @param bodyCallBack 可以拦截 SDK 采集的网络 body 数据
 */
setRequestHeaderCallback(INBSNetworkHeader headerCallBack)
setRequestBodyCallback(INBSNetworkBody bodyCallBack)
  • 代码示例
NBSAppAgent.setRequestHeaderCallback(new INBSNetworkHeader() {
    @Override
    public Map<String, String> processHeaderMap(String url, Map<String, String> headers) {
        //当请求的 URL 包含 www.tingyun.com 时,不采集 x-tingyun 请求头
        if(url.contains("www.tingyun.com")){
            headers.remove("x-tingyun");
            return haaders;
        }else{
            return headers;
        }        
    }
});
NBSAppAgent.setRequestBodyCallback(new INBSNetworkBody() {
    @Override
    public String processBody(String url, String body) {
        //当请求的URL包含www.tingyun.com时,返回自定义请求体信息
        if(url.contains("www.tingyun.com")){
            //返回自定义请求体信息
            return "";
        }else{
            return body;
        } 
    }
});

自定义响应头/响应体采集

调用该接口后,可以自定义设置采集的响应头/响应体信息,调用多次则覆盖。

注:若平台和接口都配置响应头采集,接口配置优先。body 采集仅支持 okhttp3。

  • 相关接口
/**
 * @param headerCallBack 可以拦截 SDK 采集的网络 header 数据
 * @param bodyCallBack 可以拦截 SDK 采集的网络 body 数据
 */
setResponseHeaderCallback(INBSNetworkHeader headerCallBack)
setResponseBodyCallback(INBSNetworkBody bodyCallBack)
  • 代码示例
NBSAppAgent.setResponseHeaderCallback(new INBSNetworkHeader() {
    @Override
    public Map<String, String> processHeaderMap(String url, Map<String, String> headers) {
        //当请求的 URL 包含 www.tingyun.com 时,不采集 x-tingyun-data 响应头
        if(url.contains("www.tingyun.com")){
            headers.remove("x-tingyun-data");
            return headers;
        }else{
            return headers;
        } 
    }
});
NBSAppAgent.setResponseBodyCallback(new INBSNetworkBody() {
    @Override
    public String processBody(String url, String body) {
        //当请求的 URL 包含 www.tingyun.com 时,返回自定义响应体信息
        if(url.contains("www.tingyun.com")){
            //返回自定义响应体信息
        }else{
            return body;
        }
    }
});
© 2007-2024 北京基调网络股份有限公司 all right reserved,powered by Gitbook本文档更新于: 2024-04-23 13:43

results matching ""

    No results matching ""