ios 网络通信过程cookie的使用
来源:互联网 发布:vr看小说软件 编辑:程序博客网 时间:2024/06/06 02:55
今天做项目接口需要用到http通信传输将数据传存储到cookie进行通信,在网上找了一些方法,都是关于如何操作cookie的,明确指出如何将cookie配置到http请求体内的blog不多,现在说明如下:
在进行一个网络通信之后设备就会产生Cookie数据:
1:Cookie的获取
如果获取的Cookie为空,那么发起一个网络请求即可产生Cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];for (NSHTTPCookie *cookie in [cookieJar cookies]) { NSLog(@"%@", cookie);}
2:Cookie的清除
获取所有Cookie然后删除;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray *_tmpArray = [NSArray arrayWithArray:[cookieJar cookies]]; for (id obj in _tmpArray) { [cookieJar deleteCookie:obj]; }
3:Cookie的设置
设置指定的Cookie,这样做只会设置Cookie到系统,在进行网络请求的时候并不会带着Cookie到服务端,这是很多blog未提及的;
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary]; [cookieProperties setObject:@"username" forKey:NSHTTPCookieName]; [cookieProperties setObject:@"password" forKey:NSHTTPCookieValue]; [cookieProperties setObject:@"io" forKey:NSHTTPCookieDomain]; [cookieProperties setObject:@"com" forKey:NSHTTPCookieOriginURL]; [cookieProperties setObject:@"/" forKey:NSHTTPCookiePath]; [cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion]; NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties]; [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
上面说了Cookie的一些操作,现在对如何在请求中带着cookie通信
1:苹果自带网络请求库携带cookie通信
//Cookie的基本设置 NSDictionary *properties = [[NSMutableDictionary alloc] init]; [properties setValue:cookieValue forKey:NSHTTPCookieValue]; [properties setValue:cookieKey forKey:NSHTTPCookieName]; [properties setValue:@"" forKey:NSHTTPCookieDomain]; [properties setValue:[NSDate dateWithTimeIntervalSinceNow:60*60] forKey:NSHTTPCookieExpires]; [properties setValue:@"/" forKey:NSHTTPCookiePath]; NSHTTPCookie *cookie = [[NSHTTPCookie alloc] initWithProperties:properties]; NSArray *cookies=[NSArray arrayWithObjects:cookie,nil]; NSDictionary *headers=[NSHTTPCookie requestHeaderFieldsWithCookies:cookies]; //将cookie塞进Request请求 NSURL *url = [NSURL URLWithString:pathStr]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.timeoutInterval = self.timeoutInterval; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setValue:[headers objectForKey:@"Cookie"] forHTTPHeaderField:@"Cookie"];
这样就可以把cookie带到服务端进行通信了;
2:AFN携带cookie通信
同样,关于AFN如何携带cookie进行通信,网上的一些资料说的不是很明确,现说明如下:
NSString *cookieValue = @"AQIC5wM2LY4SfcxpzbIz4Pm51J82O5VFMd50x_es65I1DNU.*AAJTSQACMDEAAlNLABM1NjQ2MDM4ODMzNDI0NDkxOTcy*,JSESSIONID=50B3DDCD8ADDA7ACB3E5C36EFD0BB62F"; NSString *cookieKey = @"iPlanetDirectoryPro"; //Cookie的基本设置 NSDictionary *properties = [[NSMutableDictionary alloc] init]; [properties setValue:cookieValue forKey:NSHTTPCookieValue]; [properties setValue:cookieKey forKey:NSHTTPCookieName]; [properties setValue:@"" forKey:NSHTTPCookieDomain]; [properties setValue:[NSDate dateWithTimeIntervalSinceNow:60*60] forKey:NSHTTPCookieExpires]; [properties setValue:@"/" forKey:NSHTTPCookiePath]; NSHTTPCookie *cookie = [[NSHTTPCookie alloc] initWithProperties:properties]; NSArray *cookies=[NSArray arrayWithObjects:cookie,nil]; NSDictionary *headers=[NSHTTPCookie requestHeaderFieldsWithCookies:cookies]; NSMutableDictionary *dic = [NSMutableDictionary dictionary]; [dic setObject:tokenIdValue forKey:tokenIdKey]; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; //将Cookie绑定request请求 [manager.requestSerializer setValue:[headers objectForKey:@"Cookie"] forHTTPHeaderField:@"Cookie"]; [manager GET:urlString parameters:dic success:^(AFHTTPRequestOperation *operation, id responseObject) { } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }];
上述2种方式亲测可行;
0 0
- ios 网络通信过程cookie的使用
- IOS网络篇:HTTP的通信过程
- iOS的网络通信
- iOS :Cookie 的使用
- ios cookie的使用
- 通信网络的演进过程
- Cookie 与 网络通信
- IOS网络通信之ASIHttpRequest的使用(二)
- iOS下的网络通信
- iOS 网络通信的方法
- iOS 开发 网络编程详解之基本网络通信过程
- IOS的cookie的使用
- iOS中的cookie的使用
- iOS里cookie的使用
- iOS中Cookie的使用
- iOS中Cookie的使用
- IOS使用AFNetworking进行网络通信
- 网络通信 - ping的具体过程
- android 布局优化(三),ViewStub标签
- 省市县三级地区列表显示
- 配置hdfs-site.xml
- 安装包时遇到 requires a peer of @angular/core、unmet peer dependency...的问题
- C++中的static关键字
- ios 网络通信过程cookie的使用
- Appium 实现iPhone真机自动化-常见问题
- 嵌套类型Array[struct]通过python+thrift保存至HBase
- Linux的原子操作与同步机制
- Android spannableStringBuilder用法整理
- MFC edit控件实现自动换行
- 指针常量与常指针
- css中遇见的问题以及自我解决方式(一)
- js第四天总结