Для целей отладки я хочу напечатать весь объект запроса. Я использую AFHTTPClient. клиент печати дает некоторую информацию, например, заголовки, но параметры post/get отсутствуют.
Есть ли способ сделать это?
Для целей отладки я хочу напечатать весь объект запроса. Я использую AFHTTPClient. клиент печати дает некоторую информацию, например, заголовки, но параметры post/get отсутствуют.
Есть ли способ сделать это?
Для AFNetworking 1.x используйте AFHTTPRequestOperationLogger
.
Для AFNetworking 2.x используйте AFNetworkActivityLogger
.
Эти инструменты используют широковещательную рассылку NSNotification
по сети AFNetworking для записи данных запроса и ответа на консоль. Объем отображаемой информации настраивается, и их можно настроить для игнорирования определенных операций.
Если вы хотите изучить тело исходящего запроса, посмотрите на параметр NSURLRequest
HTTPBody
, который является свойством на AFHTTPRequestOperation
.
Например, в методе -[AFHTTPClient getPath:
parameters:
success:
failure:]
после выполнения запроса вы можете ввести его в отладчик:
po [[NSString alloc] initWithData:request.HTTPBody encoding:4]
4 является NSUTF8StringEncoding
, как определено в NSString.h.
Параметр NSURLRequest
HTTPMethod
предоставляет метод (GET, POST, PUT и т.д.) как NSString
.
Когда ваш сервер отвечает, блок завершения успеха передает объект AFHTTPRequestOperation
(по умолчанию operation
). Вы можете:
p (int)[[operation response] statusCode]
, чтобы увидеть код состоянияpo [[operation response] allHeaderFields]
, чтобы увидеть заголовкиpo [operation responseString]
, чтобы увидеть тело ответаpo [operation responseObject]
, чтобы увидеть объект ответа (который может быть nil
, если он не может быть сериализован)Как и в AFNetworking 2.0, вы должны использовать AFNetworkActivityLogger
#import "AFNetworkActivityLogger.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#ifdef DEBUG
[[AFNetworkActivityLogger sharedLogger] startLogging];
[[AFNetworkActivityLogger sharedLogger] setLevel:AFLoggerLevelDebug];
#endif
return YES;
}
Если вы используете 3.0
и используете CocoaPods, вам также нужно вытащить AFNetworkActivityLogger
из соответствующей ветки:
pod 'AFNetworkActivityLogger', git: 'https://github.com/AFNetworking/AFNetworkActivityLogger.git', branch: '3_0_0'
Вы должны посмотреть https://github.com/AFNetworking/AFHTTPRequestOperationLogger с AFLoggerLevelDebug как уровень отладки.
#import "AFHTTPRequestOperationLogger.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#ifdef DEBUG
[[AFHTTPRequestOperationLogger sharedLogger] startLogging];
[[AFHTTPRequestOperationLogger sharedLogger] setLevel:AFLoggerLevelDebug];
#endif
return YES;
}
@end