AFN获取cookie与设置cookie

本文介绍如何在iOS应用中使用AFNetworking框架获取和设置HTTP Cookie。首先演示了从服务器响应中提取Cookie并将其存储在UserDefaults中的过程;随后展示了如何在后续请求中设置这些Cookie。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1获取cookie
<pre name="code" class="objc">[manager POST:requestUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    /**
     *  从response的HeaderField获得头文件,从头文件中通过NSHTTPCookie的cookiesWithResponseHeaderFields组成cookie的NSArray,将生成cookie的array,使用NSHttpCookie的reqeustHeaderFieldsWithCookies方法拼接成合法的http header field。最后set到request中即可。
     [manager.requestSerializer setValue:[requestFields objectForKey:@"Cookie"] forHTTPHeaderField:@"Cookie"];
     */
    NSDictionary *fields= [operation.response allHeaderFields];
    NSArray *cookies=[NSHTTPCookie cookiesWithResponseHeaderFields:fields forURL:[NSURL URLWithString:BaseURLString]];
    NSDictionary* requestFields=[NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
    [[NSUserDefaults standardUserDefaults] setObject:[requestFields objectForKey:@"Cookie"] forKey:mUserDefaultsCookie];
    
    
    
    // 使用jsonkit进行json解析
    int result=[self jsonToUserDefault:operation];
    
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    DLog(@"Error: %@", error);
    // 使用Bl的 loginfailed方法
    [_delegate loginFail];
}];



2.设置cookie
<pre name="code" class="objc">[objc] view plain copy print?
AFHTTPRequestOperationManager *manager           = [AFHTTPRequestOperationManager manager];
manager.responseSerializer                       = [AFJSONResponseSerializer serializer];
[manager.requestSerializer setValue: [[NSUserDefaults standardUserDefaults] objectForKey:mUserDefaultsCookie]forHTTPHeaderField:@"Cookie"];
manager.responseSerializer.acceptableContentTypes=[NSSet setWithObject:@"text/html"];
NSString* suffix=[NSString stringWithFormat:@"?m=user&a=edit&nickname=%@&age=%@",nickName,age];
NSString* requestUrl                             =[BaseURLString stringByAppendingString:suffix];

NSString* utf8=[requestUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];//将请求地址转换为utf8编码,使用默认unicode进行请求会报编码错误




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值