-
-
Notifications
You must be signed in to change notification settings - Fork 871
Network Debug Tool
Parse network debugging tool is a powerful tool which allows you to monitor the requests and responses between Parse SDK and Parse Server. In iOS/OSX, we use the notification mechanism to expose the NSURLRequest
, NSURLResponse
and the response body to you. You can follow this tutorial to use these notifications in you app.
Set the Parse log level to debug in your AppDelegate
.
@implementation AppDelegate
- (void)application:(UIApplication *)application didFinishLaunchWithOptions:(NSDictionary *)options {
[Parse setLogLevel:PFLogLevelDebug];
....
}
@end
Declare the notification selectors in your AppDelegate
. These methods are used to monitor the requests and responses when we get the PFNetworkWillSendURLRequestNotification
and PFNetworkDidReceiveURLResponseNotification
notifications. For example, the following two methods log request and response information to console. All the const strings we use in the following codes can be found in PFConstants.h
.
@implementation AppDelegate
- (void)receiveWillSendURLRequestNotification:(NSNotification *) notification {
NSURLRequest *request = notification.userInfo[PFNetworkNotificationURLRequestUserInfoKey];
NSLog(@"URL : %@", request.URL.absoluteString);
NSLog(@"Method : %@", request.HTTPMethod);
NSLog(@"Headers : %@", request.allHTTPHeaderFields);
NSLog(@"Request Body : %@", [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding]);
}
- (void)receiveDidReceiveURLResponseNotification:(NSNotification *) notification {
NSURLRequest *request = notification.userInfo[PFNetworkNotificationURLRequestUserInfoKey];
NSHTTPURLResponse *response = notification.userInfo[PFNetworkNotificationURLResponseUserInfoKey];
NSString *responseBody = notification.userInfo[PFNetworkNotificationURLResponseBodyUserInfoKey];
NSLog(@"URL : %@", response.URL.absoluteString);
NSLog(@"Status Code : %ld", (long)response.statusCode);
NSLog(@"Headers : %@", response.allHeaderFields);
NSLog(@"Response Body : %@", responseBody);
}
@end
Add monitor methods to the NSNotificationCenter in your AppDelegate
.
@implementation AppDelegate
- (void)application:(UIApplication *)application didFinishLaunchWithOptions:(NSDictionary *)options {
[Parse setLogLevel:PFLogLevelDebug];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveWillSendURLRequestNotification:) name:PFNetworkWillSendURLRequestNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveDidReceiveURLResponseNotification:) name:PFNetworkDidReceiveURLResponseNotification object:nil];
....
}
@end
After the setup, when Parse SDK communicates with Parse server, the related monitor methods will be triggered. Fox example, for the two monitor methods above, you can see the requests and responses in the console like this: