iPhone / Objective-C - получение повторяющегося текста PHP из UIWebView - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть веб-сайт, который возвращает access_token (например, Facebook).

redirect_uri has был изменен, чтобы указывать на файл PHP на моем веб-сервере.Код PHP просто выводит пользователей офлайн facebook access_token на страницу.

Каков наилучший способ получить это access_token, чтобы я мог сохранить его в NSUserDefaults?

Я предполагаю, что мне нужно будет использовать UIWebView s:

[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];

В некотором роде форма или форма?

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

Не используйте веб-просмотр!Он потребляет ресурсы и медленен для этой цели.

Используйте платформу, такую ​​как ASIHttpRequest , для запуска запроса http или используйте Apple NSURLConnection .Вы можете даже рассмотреть возможность использования https для обеспечения безопасности.

1 голос
/ 20 апреля 2011

Хотя я согласен, вы не должны использовать UIWebView для этого.Чтобы ответить на ваш вопрос.

NSString *theHTML = [_webView stringByEvaluatingJavaScriptFromString:@"document.body.innerText"];

Прежде чем использовать это, я бы посоветовал вам использовать следующее решение, если это возможно.

NSString *theHTML = [NSString stringWithContentsOfURL:[NSURL URLWithString:url]];

ОБНОВЛЕНИЕ: Алан Зейно отметил, что используя stringWithContentsOfURL: не очень идеальный.Поэтому я предоставляю другое решение, которое является асинхронным.Мое решение предполагает, что все будет работать.Вы должны реализовать механизм обработки ошибок и повторного использования данных.

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    // self.data is a NSMutableData property
    [self.data appendData:data];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSString *theHTML = [[[NSString alloc] initWithData:self.data encoding:NSASCIIStringEncoding] autorelease];
    self.data = nil;
    // TODO: Its up to you now how you want to handle the HTML.
}

Для выполнения запроса используйте это.

NSURLRequest *theURLRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
NSURLConnection *theURLConnection = [[[NSURLConnection alloc] initWithRequest:theURLRequest delegate:self startImmediately:YES] autorelease];
...