//
// ViewController.m
// GSSSimpleTest
//
// Copyright (c) 2013 Apple. All rights reserved.
//
#import "ViewController.h"
#import <Foundation/Foundation.h>
@interface ViewController () <NSURLConnectionDelegate>
@property (retain) NSURL *baseURL;
@property (retain) NSMutableData *content;
@property (retain) NSOperationQueue *opQueue;
@property (retain) NSURLResponse *response;
@property (retain) NSURLConnection *conn;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.opQueue = [[NSOperationQueue alloc] init];
}
#pragma mark HTTP test
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[self.content appendData:data];
}
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
NSLog(@"canAuthenticateAgainstProtectionSpace:
if ([[protectionSpace authenticationMethod] isEqualToString:NSURLAuthenticationMethodNegotiate])
return YES;
return NO;
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"Connection didReceiveResponse! Response - self.response = response;
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
__block NSString *html = [[NSString alloc] initWithData:self.content encoding:NSUTF8StringEncoding];
__block NSString *status;
self.content = NULL;
if ([self.response isKindOfClass:[NSHTTPURLResponse class]]) {
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse *)self.response;
status = [NSString stringWithFormat:@"complete with status: } else {
status = [NSString stringWithFormat:@"complete"];
}
NSLog(@"data: dispatch_async(dispatch_get_main_queue(), ^{
[self.result loadHTMLString:html baseURL:self.baseURL];
});
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"didFailWithError");
dispatch_async(dispatch_get_main_queue(), ^{
[self.result loadHTMLString:@"failed" baseURL:nil];
});
}
- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
{
NSLog(@"willSendRequest");
return request;
}
- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection
{
NSLog(@"connectionShouldUseCredentialStorage");
return YES;
}
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
NSURLProtectionSpace *protectionSpace = [challenge protectionSpace];
NSLog(@"didReceiveAuthenticationChallenge:
[[challenge sender] performDefaultHandlingForAuthenticationChallenge:challenge];
}
- (IBAction)checkURL:(id)sender {
[self.url resignFirstResponder];
self.baseURL = [NSURL URLWithString:[self.url text]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:self.baseURL];
[request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
self.conn = [[NSURLConnection alloc] initWithRequest: request delegate: self startImmediately:NO];
self.content = [NSMutableData data];
[self.result loadHTMLString:@"<html><body>performing test</body></html>" baseURL:nil];
[self.conn setDelegateQueue:self.opQueue];
[self.conn start];
}
@end