Для целей отладки я хочу напечатать весь объект запроса. Я использую 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