AFHARchiver 0.2.2

AFHARchiver 0.2.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2015年3月

Kevin Harwood 维护。



 
依赖
AFNetworking~> 2.1
AFNetworking/NSURLSession~> 2.1
 

  • Kevin Harwood

AFNetworking 扩展,可自动生成您的所有网络请求的 HTTP 归档文件!

概述

什么是 HTTP 归档(HAR)?这是一个允许您存储 HTTP 请求/响应以及元数据,并在 later time 查看这些信息以帮助调试的规范。

您可以在 这里 找到 HAR 规范,并在 这里 找到在线 HAR 查看器。您可以从 这里 下载一个示例 HAR 日志并将其拖放到在线查看器中查看。

还有许多支持 HAR 格式的工具,您可以在这里找到 这里

完整的规范尚未完全实现,但已包含基本计时信息。通过将其发布给社区,我们希望实施更多高级日志数据。

如何使用 HARchiver

使用 HARchiver 与创建其实例并给它发送开始信号一样简单。归档器将把请求直接存档到您指定的路径上的磁盘。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"log.har"];

self.afArchiver = [[AFHARchiver alloc] initWithPath:filePath error:nil];
[self.afArchiver startArchiving];

归档特定 AFHTTPRequestOperations / NSURLSessionTasks

您可能会遇到只想归档特定操作的场景。最常见的使用情况是忽略日志图像文件以防止归档文件大小过大。对于 AFHTTPRequestOperations,您可以使用setShouldArchiveOperationBlock。对于 NSURLSessionTasks,您可以使用setShouldArchiveTaskBlock.

[self.afArchiver
 setShouldArchiveOperationBlock:^BOOL(AFHTTPRequestOperation *operation) {
     return [operation.responseSerializer isKindOfClass:[AFJSONResponseSerializer class]];
 }];

[self.afArchiver
 setShouldArchiveTaskBlock:^BOOL(NSURLSessionTask *task, id<AFURLResponseSerialization> responseSerializer, id serializedResponse) {
     return [(NSObject*)responseSerializer isKindOfClass:[AFJSONResponseSerializer class]];
 }];
}];

使用 AFNetworking 2.0.0、iOS 6 和 NSURLConnection

如果您的应用程序正在使用 AFNetworking 2.0.0,目标 iOS 6,并使用 NSURLConnection API,则继续使用 AFHARchiver 0.1.0。当前的 AFHARchiver 版本需要包含在 AFNetworking 2.0.0 中的 AF/NSURLSession API。

一些 TODO

一些尚未实现的高级功能将导致更高级的日志。以下是一些包括以下内容:

  • 将请求的 持续时间 分割到适当的时间桶中。目前所有时间都被传递到持续时间桶中。
  • 使用 缓存 属性确定响应是否返回本地缓存。
  • 将所有 cookie 信息记录到 cookie 属性。
  • 计算正确的 headerSize

致谢

由 Kevin Harwood 创建(邮箱 | Twitter)在 Mutual Mobile

许可证

AFHARchiver 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。