如何将AFNetworking请求打印为RAW数据
为了debugging的目的,我想打印整个请求正文。 我正在使用AFHTTPClient。 打印客户端提供了一些信息,如标题,但后/得到的参数不存在。
有没有办法做到这一点?
内置AFNetworking工具
对于AFNetworking 1.x,请使用AFHTTPRequestOperationLogger
。
对于AFNetworking 2.x,请使用AFNetworkActivityLogger
。
这些工具都使用AFNetworking广播的NSNotification
将请求和响应数据logging到控制台。 要显示的信息量是可configuration的,可以configuration为忽略某些操作。
Xcode中没有这些工具的考试
HTTP请求(传出数据)
如果您想检查传出请求的主体,请查看NSURLRequest
的HTTPBody
参数,这是您的AFHTTPRequestOperation
属性。
例如,在方法-[AFHTTPClient getPath: parameters: success: failure:]
,请求完成后,可以在debugging器中input:
po [[NSString alloc] initWithData:request.HTTPBody encoding:4]
4是NSUTF8StringEncoding
,如NSString.h中定义。
NSURLRequest
的HTTPMethod
参数提供方法(GET,POST,PUT等)作为NSString
。
HTTP响应(传入数据)
当您的服务器响应,您的成功完成块传递一个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'
你应该看看有AFLoggerLevelDebug作为debugging级别的https://github.com/AFNetworking/AFHTTPRequestOperationLogger 。
#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