請求網頁的時候有時候我們需要傳遞一些參數信息,這個時候我們可以將參數放到請求頭中,具體使用如下:
這里有小問題就是請求參數的屬性名好像不支持下划線,即 HTTP_UID不可用,但是HTTP-UID就可以,使用下划線的后果就是后台服務器不會接受到這個請求參數,至少在我的項目中出現了這個問題
//WAP頁面 UIViewController *web = [[UIViewController alloc]init]; UIWebView *webView = [[UIWebView alloc]initWithFrame:web.view.bounds]; [web.view addSubview:webView]; //設置請求路徑 NSURL *url = [NSURL URLWithString:@"http://www.sdadksaddaskddas"]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; //添加請求頭信息 這個請求頭名稱需要和后台統一 NSMutableURLRequest *mutableRequest = [request mutableCopy]; //拷貝request //這里我添加了HTTP_UID和HTTP_TOKEN兩個請求頭屬性 [mutableRequest addValue:[CDUser currentUser].userId forHTTPHeaderField:@"HTTP-UID"]; [mutableRequest addValue:[CDUser currentUser].token forHTTPHeaderField:@"HTTP-TOKEN"]; request = [mutableRequest copy]; //拷貝回去 //加載url [webView loadRequest:request]; web.hidesBottomBarWhenPushed = YES; [self.navigationController pushViewController:web animated:YES];
自定義cookie
// 自定義ccokie 傳值 // 定義 cookie 要設定的 host NSURL *cookieHost = [NSURL URLWithString:@"http://www.dasdadadasd"]; NSDictionary *dic = @{@"key1":value1,@"key2":value2}; [dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { // 設定 cookie NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties: [NSDictionary dictionaryWithObjectsAndKeys: [cookieHost host], NSHTTPCookieDomain, [cookieHost path], NSHTTPCookiePath, key,NSHTTPCookieName, obj,NSHTTPCookieValue, nil]]; [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]; }]; [self.webView loadRequest:request];//加載
enumerateKeysAndObjectsUsingBlock是NSDictionary中的一個方法,它有一個參數就是block,這個block攜帶了三個參數,這將要把dictionary里面的key和value每次一組傳遞到block.
enumerateKeysAndObjectsUsingBlock會遍歷dictionary並把里面所有的key和value一組一組的展示給你,每組都會執行這個block。
這其實就是傳遞一個block到另一個方法,在這個例子里它會帶着特定參數被反復調用,直到找到一個ENOUGH的key,然后就會通過重新賦值那個BOOL *stop來停止運行,停止遍歷同時停止調用block。