AFNetworking молча ничего не делает - PullRequest
0 голосов
/ 15 января 2012

Я уверен, что я не знаком с программированием на iOS, но у меня проблемы с AFNetworking.Конкретно, когда я его использую, ничего не происходит.Я не получаю никакого ответа от сервера, но я также не получаю никаких ошибок.Все свойства заканчиваются NULL.

Вот мой запрос:

NSMutableDictionary *requestArray = [NSMutableDictionary new];
[requestArray setObject: @"getBio"
                 forKey: @"action"];
[requestArray setObject: @"1"
                 forKey: @"bioID"];

NSError * error = nil;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:requestArray options:0 error:&error];

NSString *myRequestString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

NSMutableURLRequest *request = [ [ NSMutableURLRequest alloc ] initWithURL: [ NSURL URLWithString: @"http://localhost/LP/JSON/Secure/bio.php" ] ]; 

[ request setHTTPMethod: @"POST" ];
[ request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[ request setHTTPBody: [myRequestString dataUsingEncoding:NSUTF8StringEncoding]];

Кажется, это работает, когда я получаю ожидаемый результат, если я просто передаю запрос в UIWebView или если яиспользуйте это:

NSURLResponse *response;
NSError *err;
NSData *returnData = [ NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[returnData bytes]];
NSLog(@"responseData: %@", content);

Другими словами, POST успешен и возвращается JSON.

Но ни один из них ничего не делает (без ошибок, без ответа):

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSLog(@"Data: %@ %@", [JSON valueForKeyPath:@"firstName"], [JSON valueForKeyPath:@"lastName"]);
} failure:nil];

И даже голые кости не пытаются работать:

AFURLConnectionOperation *operation = [[AFURLConnectionOperation alloc] initWithRequest:request];

Очевидно,Я делаю что-то ужасно неправильно.Но молчаливые неудачи делают это трудно понять.

Спасибо за любую помощь.

РЕДАКТИРОВАТЬ:

Неважно .. Я плотный.

Не создавал NSOperationQueue.

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:operation];

Хотя мне все еще непонятно, почему свойства не устанавливаются.Но, похоже, у меня по крайней мере есть данные.

1 Ответ

3 голосов
/ 16 января 2012

Создание объекта операции запроса автоматически не запускает запрос.Как вы указали в своем редактировании, вы можете либо включить его в NSOperationQueue, либо сделать [operation start] вручную.

Я бы порекомендовал вам общаться с вашим сервером, используя AFHTTPClient, посколькупредоставляет встроенный механизм для правильной установки либо строки запроса, либо тела HTTP на основе параметров, которые вы передаете. См. пример клиента Gowalla API в примере кода и метод AFHTTPClient -postPath:parameters:success:failure.

...