Objective-Cの通信関連コードスニペット
// hostName = @"123.456.78.9:5678";
// return @"123.456.78.9"
- (NSString *)domainFromHost:(NSString *)host
{
NSError *error = nil;
NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"([-\\w\\.]+):?(\\d+)?" options:0 error:&error];
if (error != nil) {
return nil;
}
@try {
NSTextCheckingResult *match = [regexp firstMatchInString:host options:0 range:NSMakeRange(0, host.length)];
return [host substringWithRange:[match rangeAtIndex:1]];
}
@catch (NSException *exception) {
return nil;
}
}
- (NSArray *)cookiesFromUserDefaults
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *cookiesData = [defaults objectForKey:zCookie];
return [NSKeyedUnarchiver unarchiveObjectWithData:cookiesData];
}
- (NSData *)dataFromCookie
{
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
return [NSKeyedArchiver archivedDataWithRootObject:[cookieStorage cookies]];
}
@interface NSURLRequest (IgnoreSSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host;
@end
@implementation NSURLRequest (IgnoreSSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host { return YES; }
@end
- (void)assignCookie:(NSArray *)cookies
{
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSEnumerator *enumerator = [cookies objectEnumerator];
for (NSHTTPCookie *cookie in enumerator) {
[cookieStorage setCookie:cookie];
}
}
- (void)deleteCookie
{
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [cookieStorage cookies];
NSEnumerator *enumerator = [cookies objectEnumerator];
NSString *domain = @"xxx.example.com";
for (NSHTTPCookie *cookie in enumerator) {
NSDictionary *properties = [cookie properties];
NSString *cookieDomain = [properties objectForKey:NSHTTPCookieDomain];
NSRange match = [cookieDomain rangeOfString:domain];
if (cookieDomain && match.location != NSNotFound) {
[properties setValue:[NSDate dateWithTimeIntervalSinceNow:-3600] forKey:NSHTTPCookieExpires];
NSHTTPCookie *newCookie = [[NSHTTPCookie alloc] initWithProperties:properties];
[cookieStorage deleteCookie:cookie];
[cookieStorage setCookie:newCookie];
[newCookie release];
}
}
}