首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Xcode6.0.1中的iOS 8.0模拟器无法正确获取cookie

为什么Xcode6.0.1中的iOS 8.0模拟器无法正确获取cookie
EN

Stack Overflow用户
提问于 2014-09-25 09:07:49
回答 1查看 270关注 0票数 1

在升级到Xcode6之后,当我从登录"POST“操作中获取cookie时,如下所示:

代码语言:javascript
复制
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@/login.php", kDSZHDomainString]];
ASIFormDataRequest *asirequest = [ASIFormDataRequest requestWithURL:url];
[asirequest setPostValue:username forKey:@"u"];
[asirequest setPostValue:password forKey:@"p"];
[asirequest setTag:kLoginRequest];
[asirequest setStringEncoding:-2147481083];
[asirequest setTimeOutSeconds:600];
[asirequest setDelegate:self];
[asirequest startAsynchronous]; 

当我设置断点来获取请求的头部时:

代码语言:javascript
复制
NSMutableDictionary * headers = [request requestHeaders];

调试信息:

代码语言:javascript
复制
Printing description of headers:
{
    "Accept-Encoding" = gzip;
    "Content-Length" = 20;
    "Content-Type" = "application/x-www-form-urlencoded; charset=hz-gb-2312";
    Cookie = "__utma=213790228.284667840.1411460847.1411460847.1411460847.1; __utmz=213790228.1411460847.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); o=m; s=542366a13a44e; sv[1]=12532852%2C12532147%2C12534523; v[11]=12515374; v[1]=12534523; v[2]=12521992; v[3]=12527199; v[9]=12441637";
    "User-Agent" = "Top81 0.7 rv:0.7.459 (iPhone Simulator; iPhone OS 8.0; en_US)";
}

在iOS 7模拟器中,标头是:

代码语言:javascript
复制
Printing description of headers:
{
    "Accept-Encoding" = gzip;
    Cookie = "o=m; s=542369d4ede78; sv[1]=12532886%2C12528442%2C12534551; u=xxxx%2Ca999b1c0d3663e236f58277302b8be90%2C0; v[1]=12534551";
    "User-Agent" = "Top81 0.7 rv:0.7.459 (iPhone Simulator; iPhone OS 7.1; en_US)";
}

因此,cookie "u“已正确获取。

我用ASIHTTPRequest和AFNetworking测试了代码,得到了相同的结果。

是Xcode和iOS 8模拟器的错误还是解决这个问题的任何代码?

EN

回答 1

Stack Overflow用户

发布于 2014-09-29 21:41:58

我已经使用了afnetworking,它在ios 8中运行良好。

代码语言:javascript
复制
+(void)postData : (NSString *)url parameters:(NSDictionary *)paraDict  success: (void (^) (NSDictionary *responseStr))success failure: (void (^) (NSError *error))failure
{
    AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:url]];

    manager.responseSerializer =  [AFHTTPResponseSerializer serializer];

    AFHTTPRequestOperation *op = [manager POST:url parameters:paraDict constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

    } success:^(AFHTTPRequestOperation *operation, id responseObject)
    {
        NSError* error = nil;


        success([NSJSONSerialization JSONObjectWithData:responseObject options:0 error:&error]);

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

        failure(error);
    }];
    [op start];

}

这里的url是字符串而不是nsurl,它应该类似于@"http://www.google.com

paradict是字典。你可以把它写成

NsDictionary *paraDict =@{@“用户名”:@“u”,@“密码”:@“p”}

希望能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26028917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档