请求数据相关接口

自定义请求头

SDK 支持配置采集「请求头」参数,用以进行「后端调用链追踪」。

  • 相关接口
/**
 * @key 设置为要采集的请求头中的headerkey值
 */
+(void)setRequestIDHeaderKey:(NSString *)key;
  • 代码示例
int main(int argc, char * argv[]) {
 @autoreleasepool {
      // 调用位置建议在初始化,其他位置首次不采集
      [NBSAppAgent startWithAppID:@"appkey"];
      [NBSAppAgent setRequestIDHeaderKey:@"key"]; 
      ...
    }
}

SDK传输数据使用国密加密

SDK传输数据支持国密加密,调用该接口开启国密加密,默认不开启「前提:需工程中引入NBSGMKit.framework」。

注:该接口需要在SDK初始化前调用。

  • 相关接口
/**
 * @need 传入YES,则SDK传输数据使用国密加密。
 */
+ (void)encryptionRequired:(BOOL)need;
  • 代码示例
int main(int argc, char * argv[]) {
    @autoreleasepool {
            //开启国密加密
          [NBSAppAgent encryptionRequired:YES];
          //默认为https,如果redirect_host为http协议的话则需要调用该接口。
        [NBSAppAgent setHttpEnabled:YES]; 
          //redirect_host为平台服务器地址
        [NBSAppAgent setRedirectURL:@"redirectUrl"];
          //Your_appkey从平台中获取
        [NBSAppAgent startWithAppID:@"APPkey"];  
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

信安SDK请求采集开关

信安SDK请求采集开关,默认关闭,调用此接口开启。

  • 相关接口
/**
 * @brief 开启信安SDK 请求监控,默认关闭
 * @note
 * 听云SDK监控信安SDK的请求原理为通过拦截信安SDK发请求的接口来获得请求的性能数据,如果信安SDK的请求接口更新(方法名称改变或者参数发生变化),则可能导致拦截失败,严重可能发生崩溃,所以开启该功能或者更新信安SDK后,都应该进行测试。
 */
+ (void)startIMSecurityMonitor;
  • 代码示例
int main(int argc, char * argv[]) {
    NSString * appDelegateClassName;
    @autoreleasepool { 
    ...
      [NBSAppAgent startIMSecurityMonitor];//需在SDK start 之前调用
      [NBSAppAgent setRedirectURL:@"redirectUrl"];
        [NBSAppAgent startWithAppID:@"APPkey"];
    ...
    }
  }

支持采集libcurl请求数据

获取libcurl请求性能数据,如:IP、DNS、TCP、SSL等性能指标。
  • 相关接口
/**
 * for record curl networl.
 */
void nbsGetCurlNetworkInfo(void *curl,int curlcode,void *ptr);
  • 代码示例
- (void)libcurlNetwork
{
    ...
    CURL *curl = curl_easy_init();
    CURLcode res;
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
        res = curl_easy_perform(curl);
        nbsGetCurlNetworkInfo(curl, res, &curl_easy_getinfo);
        curl_easy_cleanup(curl);
    }
    ...
}

请求内容采集

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

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

当响应头中Content-Type值为application/json、text/plain时,会采集响应体。

注:当平台「采集网络请求内容」开启且调用该接口时,请求内容采集功能才开启。

  • 相关接口
/**
 * 启用请求内容的获取
 */
+ (void)enableNetworkContentRecord;
  • 代码示例
int main(int argc, char * argv[]) {
    NSString * appDelegateClassName;
    @autoreleasepool {
        ...
        [NBSAppAgent enableNetworkContentRecord];
        [NBSAppAgent setRedirectURL:@"redirectUrl"];
        [NBSAppAgent startWithAppID:@"appkey"];

        ...
        appDelegateClassName = NSStringFromClass([AppDelegate class]);
    }
    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
}

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

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

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

  • 相关接口
/**
 * 设置自定义的请求头与请求体获取方式
 */
+ (void)setupRequestSanitizer:(void (^)(NBSRequestSanitizer *requestSanitizer))configureSanitizer;
  • 代码示例

    • 请求头采集
     [NBSAppAgent setupRequestSanitizer:^(NBSRequestSanitizer *requestSanitizer) {
            [requestSanitizer setRequestHeaderSanitizionWithBlock:^NSDictionary * _Nullable(NSURL * _Nonnull url, NSDictionary * _Nonnull allHTTPHeaderFields) {
                // 当请求的URL为包含www.tingyun.com时,不采集traceparent、traceid这两个请求头
                if([url.absoluteString containsString:@"www.tingyun.com"])
                {
                    NSMutableDictionary *dict = [allHTTPHeaderFields mutableCopy];
                    [dict removeObjectsForKeys:@[@"traceparent",@"traceid"]];
                    // 返回自定义采集的请求头
                    return dict;
                }
                // 返回所有请求头
                return  allHTTPHeaderFields;
            }];
      }];
    
    • 请求体采集
    [NBSAppAgent setupRequestSanitizer:^(NBSRequestSanitizer *requestSanitizer) {
            [requestSanitizer setRequestBodySanitizionWithBlock:^NSString * _Nullable(NSURL * _Nonnull url, NSDictionary * _Nonnull allHTTPHeaderFields, NSData * _Nonnull body) {
                            // 请求的URL包含www.tingyun.com时,返回自定义请求体信息
                if([url.absoluteString containsString:@"www.tingyun.com"])
                {         
                    // 返回自定义请求体信息
                    return @"";
                }
                NSString *reqBody = [[NSString alloc] initWithData:body encoding:NSUTF8StringEncoding];
                return  reqBody;
            }];
    
    }];
    

可以将请求头和请求体放一起配置。

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

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

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

  • 接口
/**
 * 设置自定义的响应头与响应体获取方式
 */
+ (void)setupReponseSanitizer:(void (^)(NBSResponseSanitizer *responseSanitizer))configureSanitizer;
  • 示例

    • 响应头采集
    [NBSAppAgent setupReponseSanitizer:^(NBSResponseSanitizer *responseSanitizer) {
            [responseSanitizer setResponseHeaderSanitizionWithBlock:^NSDictionary * _Nullable(NSHTTPURLResponse * _Nonnull response) {
                // 设置当请求的URL包含www.tingyun.com时,不采集x-Request-Id、Tracecode响应头
                if( [response.URL.absoluteString containsString:@"www.tingyun.com"]){
                    NSMutableDictionary *dict = [response.allHeaderFields mutableCopy];
                    [dict removeObjectsForKeys:@[@"x-Request-Id",@"Tracecode"]];
                    // 返回自定义采集的响应头
                    return dict;
                }
                // 返回所有响应头
                return response.allHeaderFields;
            }];
    }];
    
    • 响应体采集
        [NBSAppAgent setupReponseSanitizer:^(NBSResponseSanitizer *responseSanitizer) {
    
            [responseSanitizer setResponseBodySanitizionWithBlock:^NSString * _Nullable(NSHTTPURLResponse * _Nonnull response, NSData * _Nonnull body) {
                // 当请求的URL包含www.tingyun.com时,返回自定义响应体信息
                if([response.URL.absoluteString containsString:@"www.tingyun.com"])
                {
                    // 返回自定义响应体信息
                    return @"";
                }
                NSString *reqBody = [[NSString alloc] initWithData:body encoding:NSUTF8StringEncoding];
                return  reqBody;
            }];
    
        }];
    

可以将响应头和响应体放一起配置。

© 2007-2024 北京基调网络股份有限公司 all right reserved,powered by Gitbook本文档更新于: 2024-05-28 15:01

results matching ""

    No results matching ""