请求数据相关接口
自定义请求头
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; }]; }];
可以将响应头和响应体放一起配置。