自定义请求头信息及cookie信息
请求网页的时候有时候我们需要传递一些参数信息,这个时候我们可以将参数放到请求头中,具体使用如下:
这里有小问题就是请求参数的属性名好像不支持下划线,即 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。