如何将AFNetworking请求打印为RAW数据

Jac*_*ień 25 ios afnetworking

出于调试目的,我想打印整个请求体.我正在使用AFHTTPClient.打印客户端提供一些信息,如标题,但post/get params不存在.

有没有办法做到这一点?

Aar*_*ger 37

内置AFNetworking工具

对于AFNetworking 1.x,请使用AFHTTPRequestOperationLogger.

对于AFNetworking 2.x,请使用AFNetworkActivityLogger.

这些工具都使用NSNotificationAFNetworking 的广播将请求和响应数据记录到控制台.要显示的信息量是可配置的,可以将它们配置为忽略某些操作.

没有这些工具在Xcode中进行检查

HTTP请求(传出数据)

如果要检查的传出请求的身体,看NSURLRequestHTTPBody参数,这是你的一个属性AFHTTPRequestOperation.

例如,在方法中-[AFHTTPClient getPath: parameters: success: failure:],在发出请求后,您可以在调试器中键入:

po [[NSString alloc] initWithData:request.HTTPBody encoding:4]

4 NSUTF8StringEncoding,如NSString.h中所定义.

所述NSURLRequestHTTPMethod参数提供了方法(GET,POST,PUT,等)作为一个NSString.

HTTP响应(传入数据)

当您的服务器响应时,您的成功完成块将传递一个AFHTTPRequestOperation对象(operation默认情况下调用).您可以:

  • p (int)[[operation response] statusCode] 查看状态代码
  • po [[operation response] allHeaderFields] 看到标题
  • po [operation responseString] 看到响应机构
  • po [operation responseObject]查看响应对象(可能是nil因为它无法序列化)

  • **AFNetworking 3.x**中的任何记录/调试解决方案? (8认同)

Zee*_*Zee 21

从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;
}
Run Code Online (Sandbox Code Playgroud)

如果您正在使用3.0和使用CocoaPods,您还需要AFNetworkActivityLogger从相应的分支中提取:

pod 'AFNetworkActivityLogger', git: 'https://github.com/AFNetworking/AFNetworkActivityLogger.git', branch: '3_0_0'
Run Code Online (Sandbox Code Playgroud)


Ben*_*ueg 17

您应该查看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
Run Code Online (Sandbox Code Playgroud)

  • 但是这不会在POST请求中显示附加数据. (5认同)
  • AFNetworking 2.O有一个新的记录器:https://github.com/AFNetworking/AFNetworkActivityLogger (3认同)