Para propósitos de debugging, quiero imprimir el cuerpo de la request completa. Estoy usando AFHTTPClient. El cliente de printing proporciona información, como los encabezados, pero los parameters de publicación / obtención no están allí.
¿Hay una manera de hacerlo?
Para AFNetworking 1.x, use AFHTTPRequestOperationLogger
.
Para AFNetworking 2.x, use AFNetworkActivityLogger
.
Estas herramientas utilizan la transmisión NSNotification
por AFNetworking para registrar los datos de request y respuesta en la console. La cantidad de información que se muestra es configurable, y pueden configurarse para ignorar ciertas operaciones.
Si desea examinar el cuerpo de una request de salida, consulte el parámetro HTTPBody
, que es una propiedad de su AFHTTPRequestOperation
.
Por ejemplo, en el método -[AFHTTPClient getPath: parameters: success: failure:]
, una vez realizada la request, puede escribir esto en el depurador:
po [[NSString alloc] initWithData:request.HTTPBody encoding:4]
4 es NSUTF8StringEncoding
, como se define en NSString.h.
El parámetro HTTPMethod
proporciona el método (GET, POST, PUT, etc.) como un NSString
.
Cuando su server responde, su bloque de finalización de éxito se pasa a un object AFHTTPRequestOperation
(denominado operation
por defecto). Usted puede:
p (int)[[operation response] statusCode]
para ver el código de estado po [[operation response] allHeaderFields]
para ver los encabezados po [operation responseString]
para ver el cuerpo de respuesta po [operation responseObject]
para ver el object de respuesta (que puede ser nil
si no se pudo serializar) A partir de AFNetworking 2.0, debe usar AFNetworkActivityLogger
#import "AFNetworkActivityLogger.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { #ifdef DEBUG [[AFNetworkActivityLogger shanetworkingLogger] startLogging]; [[AFNetworkActivityLogger shanetworkingLogger] setLevel:AFLoggerLevelDebug]; #endif return YES; }
Si está utilizando 3.0
y está utilizando CocoaPods , también deberá extraer AFNetworkActivityLogger
de la twig adecuada:
pod 'AFNetworkActivityLogger', git: 'https://github.com/AFNetworking/AFNetworkActivityLogger.git', branch: '3_0_0'
Debería echar un vistazo a https://github.com/AFNetworking/AFHTTPRequestOperationLogger con AFLoggerLevelDebug como nivel de debugging.
#import "AFHTTPRequestOperationLogger.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { #ifdef DEBUG [[AFHTTPRequestOperationLogger shanetworkingLogger] startLogging]; [[AFHTTPRequestOperationLogger shanetworkingLogger] setLevel:AFLoggerLevelDebug]; #endif return YES; } @end