Предложение сетевой библиотеки iOS - PullRequest
1 голос
/ 08 февраля 2012

Я хотел бы предложить несколько вариантов выбора сетевой библиотеки iOS для моего приложения.

Мои потребности:

  1. Отправьте асинхронный запрос (GET и POST) и, если сеть не работает, отобразите UIAlertView, чтобы сообщить пользователю об ошибке.
  2. Отправьте простой синхронный запрос (GET) и, если сеть не работает, выполните то же, что и в предыдущем пункте.

Кто-нибудь может предложить какую-нибудь библиотеку? (кроме ASIHTTPRequest, который больше не поддерживается) Возможно, если у этой библиотеки есть хороший документ, лучше. Я новичок в iOS.

Заранее спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 08 февраля 2012

Я слышал хорошие вещи о RestKit https://github.com/RestKit/RestKit

В нижней части этого блога есть хороший список альтернатив. http://allseeing -i.com / [request_release]; * +1005 *

Раньше я только использовал ASIHTTPRequest, и, хотя он больше не разрабатывается Беном Копси, похоже, он все еще объединяет запросы на получение данных и прочее. Он используется многими людьми, и я не удивлюсь, если сообщество его подберет. Вероятно, это будет безопасно по крайней мере для другой версии iOS.

1 голос
/ 08 февраля 2012

Как указано в вопросе, он также ищет асинхронные запросы.

Я бы предложил AFNetworking или GCNetworkKit (последний - мой). Обе библиотеки очень просты в использовании и в то же время мощны.

Я не думаю, что AFNetworking обеспечивает синхронный сетевой запрос. Ну, по крайней мере, мой нет. Вы не должны делать это в любом случае. Обе библиотеки поддерживают обработку ошибок. Не должно быть никаких проблем при реализации UIAlertView.

Вы можете найти их на GitHub. Просто ищите их. Надеюсь, это поможет:)

1 голос
/ 08 февраля 2012

Для этого вам не нужна библиотека.

Чтобы отправить синхронный запрос GET:

//set up the GET URL and params
NSURL *getURL = [NSURL URLWithString:@"http://somesite.com/somepath?foo=bar"];

//create the request
NSURLRequest *request = [NSURLRequest requestWithURL:getURL];

//get the response
NSError *error = nil;
NSURLResponse *response = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

Чтобы отправить синхронный запрос POST:

//set up the POST URL and params
NSURL *postURL = [NSURL URLWithString:@"http://somesite.com/somepath"];
NSString *postParams = @"foo=bar&hello=world";

//create the request - this bit is the same for every post
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:postURL];
[request setHTTPMethod:@"POST"];
[request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
NSData *data = [postParams dataUsingEncoding:NSUTF8StringEncoding];
[self addValue:[NSString stringWithFormat:@"%i", [data length]] forHTTPHeaderField:@"Content-Length"];
[self setHTTPBody:data];

//get the response
NSError *error = nil;
NSURLResponse *response = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

В любом случае, если responseData равен nil или ошибка не равна nil, представьте предупреждение, используя следующее:

[[[[UIAlertView alloc] initWithTitle:@"Error" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show];
...