在我的应用程序中,我调用了身份验证api,下面是相同的代码
NSMutableDictionary* paraDict = [[NSMutableDictionary alloc] init];
[paraDict setObject:@"userid" forKey:@"username"];
[paraDict setObject:@"password" forKey:@"password"];
NSError *error;
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
NSURL *url = [NSURL URLWithString:@"https://my.oktapreview.com/api/v1/authn"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setHTTPMethod:@"POST"];
NSData *postData = [NSJSONSerialization dataWithJSONObject:paraDict options:0 error:&error];
[request setHTTPBody:postData];
[request setHTTPShouldHandleCookies:YES];
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if ([(NSHTTPURLResponse*)response statusCode] == 200) {
aBlock(YES);
}
}];
[postDataTask resume];
在此之后我得到了成功回复,但无法获得与之相关的所有Cookie(当使用相同的请求与PostMan核对时,已收到大约12个带回复的Cookie)
为了阅读cookie,我正在使用
for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies])
{
NSLog(@"name: '%@'\n", [cookie name]);
NSLog(@"value: '%@'\n", [cookie value]);
NSLog(@"domain: '%@'\n", [cookie domain]);
NSLog(@"path: '%@'\n", [cookie path]);
}
是否可以设置Cookie接受政策。
答案 0 :(得分:0)
也许您可以使用NSHTTPCookie
-cookiesWithResponseHeaderFields:forURL:
method从您的数据任务收到的响应中提取回复的Cookie。
喜欢这样
task = [session dataTaskWithRequest:... completionHandler:^(...) {
NSArray<NSHTTPCookie *> *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:[(NSHTTPURLResponse *)response allHeaderFields] forURL:request.URL];
// Use cookies
}];