Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
wowgamr
4 / 4 / 1
Регистрация: 11.11.2013
Сообщений: 51
#1

Авторизация на сайте через приложение - Objective-C

31.03.2014, 11:28. Просмотров 1290. Ответов 7
Метки нет (Все метки)

Добрый день!
Подскажите, пожалуйста, как реализовать вход на сайт через приложение. Пробовал через NSURLRequest, но, я так понимаю, это не то, что нужно.

PS нашел на просторах интернета этот код. Соединение успешно проходит, но ничего не отображается в Text Label.
PSS сайт new.mcko.ru :3

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // создаем запрос
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://new.mcko.ru"]
                                             cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];
    
    // создаём соединение и начинаем загрузку
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    
    if (connection) {
        // соединение началось
        label.text = @"Connecting...";
        // создаем NSMutableData, чтобы сохранить полученные данные
        receivedData = [[NSMutableData data] retain];
    } else {
        // при попытке соединиться произошла ошибка
        label.text = @"Connection error!";
    }
    
}
 
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    // получен ответ от сервера
    [receivedData setLength:0];
}
 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    // добавляем новые данные к receivedData
    [receivedData appendData:data];
}
 
- (void)connection:(NSURLConnection *)connection
  didFailWithError:(NSError *)error {
    // освобождаем соединение и полученные данные
    [connection release];
    [receivedData release];
    
    // выводим сообщение об ошибке
    NSString *errorString = [[NSString alloc] initWithFormat:@"Connection failed! Error - %@ %@ %@",
                             [error localizedDescription],
                             [error description],
                             [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]];
    label.text = errorString;
    
    [errorString release];
}
 
 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    // данные получены
    // здесь можно произвести операции с данными
    
    // можно узнать размер загруженных данных
    //NSString *dataString = [[NSString alloc] initWithFormat:@"Received %d bytes of data",[receivedData length]];
    
    // если ожидаемые полученные данные - это строка, то можно вывести её
    NSString *dataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
    
    label.text = dataString;
    
    // освобождаем соединение и полученные данные
    [connection release];
    [receivedData release];
    [dataString release];
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 11:28     Авторизация на сайте через приложение
Посмотрите здесь:

Objective-C Авторизация в соц сетях
Настроить компиллятор Xcode, для включения ресурсов в приложение Objective-C
Objective-C Приложение табличного представления
Приложение падает при многократной загрузке фото/видео Objective-C
Приложение засыпает при загрузке Objective-C
Авторизация на сервере и получение данных Objective-C
Rate my app - оцените мое приложение Objective-C
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
31.03.2014, 12:27     Авторизация на сайте через приложение #2
Хм этот код не производит не какую авторизацию. Исп для получения данных с удаленного сервера. Можете исп для скачаивание изображений, ну или для других целей.

))) авторизовался на сайте... логин:test , пароль:test ))))

Добавлено через 4 минуты
Я думаю вам нужно внимательно проанализировать сайт, и разобраться как происходит авторизация...
Я имею ввиду вот это место:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<form id="loginForm_n" action="" method="post">
  <div class="field_n" align="left">
    <label>Логин:</label>
    <a href="javascript:submitform_nx();" id="forgot_n" title="закрыть">[Х]</a>
    <div class="input_n">
      <input type="text" tabindex=1 name="login6965" value="tt" id="login6965"/>
    </div>
  </div>
  <div class="field_n" align="left">
    <a href="/index.php?page=forgot" id="forgot_n">Забыли пароль?</a>
    <label>Пароль:</label>
    <div class="input_n">
      <input type="password" class="pass" tabindex=2 name="passwd5659" value="" />
    </div>
  </div>
<a href="/index.php?page=invite" id="invite">Вам выдали код приглашения?</a>  <div class="submit_n"><div id=mess style="color:red;font-size:14px;">Связка логин/пароль не верна.</div><br>    <div class="scrils">
      <script type="text/javascript" src="https://seal.thawte.com/getthawteseal?host_name=new.mcko.ru&amp;size=M&amp;lang=en"></script>
    </div>
    <div class="inst">
      <a href="/new_mcko/pages/help/instruc/Инструкция_по_входу_в_МРКО.doc"><img src="/img/instruc01.png"></a>
    </div>
    <button type="submit" title="Войти">Войти</button>
  </div>
</form>
Как вы видите, тут даже есть еще один логин/пароль: login6965/passwd5659 )))))

Добавлено через 4 минуты
Вам нужно отправить данные исп post запрос. Из парамметров как минимум вы должны будете указать
login6965='ваш логин'
passwd5659='ну и пароль'
Запорос вот сюда https://new.mcko.ru/
Ну а дальше смотрим что вернет сервер...
wowgamr
4 / 4 / 1
Регистрация: 11.11.2013
Сообщений: 51
31.03.2014, 12:32  [ТС]     Авторизация на сайте через приложение #3
Цитата Сообщение от Pro2005 Посмотреть сообщение
Как вы видите, тут даже есть еще один логин/пароль: login6965/passwd5659
Это названия блоков)

Цитата Сообщение от Pro2005 Посмотреть сообщение
Я думаю вам нужно внимательно проанализировать сайт, и разобраться как происходит авторизация...
Уже неоднократно смотрел этот код. Здесь лишь форма ввода, разве нет?
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
31.03.2014, 12:32     Авторизация на сайте через приложение #4
Это названия блоков)... угу введите их в поля логин/пароль )))
wowgamr
4 / 4 / 1
Регистрация: 11.11.2013
Сообщений: 51
31.03.2014, 12:36  [ТС]     Авторизация на сайте через приложение #5
Цитата Сообщение от Pro2005 Посмотреть сообщение
введите их в поля логин/пароль
Связка логин/пароль не верна.
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
31.03.2014, 12:40     Авторизация на сайте через приложение #6
Да уже не пускает, ну что ж... )
wowgamr
4 / 4 / 1
Регистрация: 11.11.2013
Сообщений: 51
31.03.2014, 12:42  [ТС]     Авторизация на сайте через приложение #7
Pro2005, таки при помощи какой функции сделать авторизацию?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 14:28     Авторизация на сайте через приложение
Еще ссылки по теме:

Objective-C Во что компилируется Objective-C приложение
Objective-C Приложение вылетает при запуске
Приложение вылетает, сообщая о нехватке памяти Objective-C
Objective-C Новостное приложение iOS
Консольное приложение OSX Objective-C

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
31.03.2014, 14:28     Авторизация на сайте через приложение #8
Как-то вот так:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#define kURLString                  @"https://new.mcko.ru/"
 
@implementation ViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
    AFSecurityPolicy *policy = [[AFSecurityPolicy alloc] init];
    [policy setAllowInvalidCertificates:YES];
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager setSecurityPolicy:policy];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    [manager GET:kURLString parameters:[NSDictionary dictionary] success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSString *htmlData = [[NSString alloc] initWithData:responseObject encoding:NSWindowsCP1251StringEncoding];
        [self loginWithName:@"test" password:@"test" prevHTMLData:htmlData withBlock:^(NSString *resultString) {
            NSLog(@"result:%@", resultString);
        }];
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"error:%@", [error localizedDescription]);
    }];
}
 
- (void)loginWithName:(NSString *)login password:(NSString *)password prevHTMLData:(NSString *)htmlData withBlock:(void(^)(NSString *resultString))block {
    NSString *loginName = [self searchExpressionWithPattern:@"login\\d{4}" inString:htmlData];
    NSString *passwsName = [self searchExpressionWithPattern:@"passwd\\d{4}" inString:htmlData];
    if (loginName == nil || password == nil) {
        block(nil);
        return;
    }
    AFSecurityPolicy *policy = [[AFSecurityPolicy alloc] init];
    [policy setAllowInvalidCertificates:YES];
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager setSecurityPolicy:policy];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    NSDictionary *parameters = @{loginName:login, passwsName:password};
    [manager POST:kURLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSString *htmlData = [[NSString alloc] initWithData:responseObject encoding:NSWindowsCP1251StringEncoding];
        block(htmlData);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"error:%@", [error localizedDescription]);
        block(nil);
    }];
}
 
- (NSString *)searchExpressionWithPattern:(NSString *)pattern inString:(NSString *)dataSource {
    NSError *error = nil;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];
    NSTextCheckingResult *checkingResult = [regex firstMatchInString:dataSource options:NSMatchingReportProgress range:NSMakeRange(0, dataSource.length)];
    NSString *result = [dataSource substringWithRange:checkingResult.range];
    return result;
}
 
@end
*** исп AFNetworking !!!
Yandex
Объявления
31.03.2014, 14:28     Авторизация на сайте через приложение
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru