Xcode Call Web PHP Файл с параметрами?

Я работал над созданием сетевого приложения для ios. Мне нужно вызвать php-файл на моем сайте, а затем получить информацию обратно. Я использовал этот учебник, но он устарел и сейчас не поддерживается.

http://www.raywenderlich.com/2965/how-to-write-an-ios-app-that-uses-a-web-service

Я немного посмотрел на MKNetworkKit и думаю, что это то, что мне нужно использовать, но я не уверен, как это реализовать.

2 ответа

Решение

Я думаю, что большинство людей согласны с тем, что AFNetworking - лучшая библиотека для этого. Есть даже очень хороший учебник raywenderlich.com о том, как его использовать.

Например, я использую его таким образом, чтобы получить содержимое ссылки с параметрами (makemyday.com/web/export.php?id=345) в UIWebView:

- (IBAction)searchForNearbyButtonPressed:(id)sender {
    NSURL *baseURL = [NSURL URLWithString:@"http://makemyday.com"];
    NSDictionary *parameters = @{@"id": @"345"};
    AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];
    [client registerHTTPOperationClass:[AFHTTPRequestOperation class]];
    [client getPath:@"/web/export.php"
         parameters:parameters
            success:^(AFHTTPRequestOperation *operation, id responseObject) {
                NSLog(@"response=%@", [operation.response allHeaderFields]);
                [self.webView loadData:responseObject  MIMEType:operation.response.MIMEType textEncodingName:operation.response.textEncodingName baseURL:operation.response.URL];
            }
            failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                NSLog(@"error=%@", error.description);
            }
     ];

}

Введите "NSURLConnection" в помощь. Там есть несколько хороших примеров.

Самым простым является синхронный вызов с NSURLConnection.

Что является блокирующим вызовом, пока ваш сервер не ответит и не закроется.

    NSURL *url = [NSURL URLWithString:@"http://makemyday.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSError *error;
    NSURLResponse *response;
    NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

Лучшими методами для взаимодействия с пользователем являются асинхронность с использованием делегата. Я нашел следующее удовлетворение, так как можно добавить время из 5, 10, 20, 60 секунд в любом случае.

NSURLRequest *theRequest = [NSURLRequest requestWithURL: url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:**20.0**];

NSURLDownload  *theDownload = [[NSURLDownload alloc] initWithRequest:theRequest delegate:**self**]; // NOTE THE SELF FOR THE CALLBACks

if (!theDownload) {
   //OOPS
}

Которые используют следующие методы обратного вызова для fail, success/finish и имени файла

- (void)download:(NSURLDownload *)download decideDestinationWithSuggestedFilename:(NSString *)filename;
- (void)download:(NSURLDownload *)download didFailWithError:(NSError *)error
- (void)downloadDidFinish:(NSURLDownload *)download;
- (void)download:(NSURLDownload *)download didCreateDestination:(NSString *)path
Другие вопросы по тегам