2014-09-25 2 views
1

После обновления до Xcode 6 Когда я выборки печенье из логина действие «POST», как это:Почему IOS 8,0 симулятор в Xcode 6.0.1 не удалось получить COOKIE правильно

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]; 

когда я установить точку останова в Получить запрос в заголовки:

NSMutableDictionary * headers = [request requestHeaders]; 

отладочная информация:

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 тренажере, заголовки:

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 или любой код для решения этой проблемы?

ответ

0

Я использовал afnetworking и она работает нормально в ИОС 8. Вот функция

+(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 является словарь .U может сделать это как

NSDictionary * paraDict = @ {@ "имя пользователя": @ "и", @ "пароль": @ "р"}

Надеется, что это помогает

Смежные вопросы