利用 NSHTTPCookieStorage 管理 Cookie 傳送
在 iOS 中如果自行建立 UIWebView 來開啟遠端站台資料,這時可以透過以下方法加入 Cookie。原理是透過 iOS 提供的 NSHTTPCookieStorage 元件來控制所有從這個 Application 發出的 HTTP Request,如果在 UIWebView 有使用 iFrame 或者 AJAX 發出的 Request 同樣會受到影像,算是一個方便的功能,讓 Cookie 可以集中管理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
- (void)dealloc { [_window release]; [super dealloc]; }
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// 關閉 Statusbar [[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
// 定義 cookie 要設定的 host NSURL *cookieHost = [NSURL URLWithString:@"http://blog.toright.com:80/"];
// 設定 cookie NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties: [NSDictionary dictionaryWithObjectsAndKeys: [cookieHost host], NSHTTPCookieDomain, [cookieHost path], NSHTTPCookiePath, @"COOKIE_NAME", NSHTTPCookieName, @"COOKIE_VALUE", NSHTTPCookieValue, nil]];
// 設定 cookie 到 storage 中 [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
// 建立 NSURLRequest 連到 cookie.php,連線的時候會自動加入上面設定的 Cookie NSString *urlAddress = @"http://blog.toright.com/cookie.php"; NSURL *myurl = [NSURL URLWithString:urlAddress]; NSURLRequest *requestObj = [NSURLRequest requestWithURL:myurl];
// 建立 UIWebView UIWebView *webView = [[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 設定 UIWebView 讀取的位置 [self.window addSubview:webView]; [webView loadRequest:requestObj]; [webView release]; [self.window makeKeyAndVisible];
return YES; }
@end |
用來驗證是否有傳送 Cookie 的程式,cookie.php 的程式碼如下,單純顯示收到的 Cookie:
1 2 3 4 |
<?php // 顯示收到的 Cookie print_r($_COOKIE); ?> |
App 執行畫面如下:
參考資料
欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/p/4135221.html