使用AFNetworking跟踪网络请求的数据使用
问题描述:
我正在尝试找出一种方法来查找使用AFNetworking的请求发送/接收的数据量。解决这个问题的一些最佳实践是什么?使用AFNetworking跟踪网络请求的数据使用
例子:
- 做一个GET到端点
fakeapi/downloadlist
- 我想知道有多少字节发送给服务器和多少字节被收了回来。
感谢您的帮助!
答
让我们用AFHTTPSessionManager
上的GET:parameters:success:failure:
method来执行GET请求。该方法的声明是:
- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(nullable id)parameters
success:(nullable void (^) (NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^) (NSURLSessionDataTask *_Nullable task, NSError *error))failure;
有这里有趣两大块:一为成功(命名非常巧妙success
),另一个是在请求一个failure
。
这两个块都会返回一个类型为NSURLSessionDataTask的参数(在失败事件中为空,如果是这种情况,那么没有响应,最有可能在没有互联网连接时发生)。根据Apple Documentation for NSURLSessionDataTask
,它从NSURLSessionTask
继承,能够获得响应对象的一些其它性质(以上的符号部分一看就文档):
int bytesReceived = ((int)[task countOfBytesReceived]);
int bytesSent = ((int)[task countOfBytesSent]);
// Do something with the numbers from here...
从这里
此外,采取对一个外表Symbols for NSURLSessionTask并采取任何你需要的东西。