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

Objective-C

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

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

31.03.2014, 11:28. Просмотров 1324. Ответов 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];
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2014, 11:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Авторизация на сайте через приложение (Objective-C):

Авторизация на сайте (построенном на MVC 4) через приложение Android - C# MVC
Здравствуйте! История состоит в следующем...на фреймворке MVC 4 был создан сайт. Затем потребовалось написать приложение для платформы...

Авторизация на сайте через пользователей в 1с - 1С
гугл не помог, даже не понятно возможно ли это реализовать, есть 1с УТ 11.1, там есть пользователи, есть сайт в локалке, на...

Авторизация на сайте через браузер - Delphi
Здравствуйте. Нужно открыть страничку сайта, при этом предварительно авторизироваться на нем. Код формы входа на сайт такой: <form...

Авторизация на сайте через IdHTTP - C++ Builder
Здравствуйте! Не могу понять собственно в чём дело - не проходить авторизация. Прочитал много похожих тем на форуме и никак не найду...

Авторизация на сайте через инстаграм - Delphi
помогите с авторизацией через инстаграм на vkway.com отблагодорю WMR! delphi7. как я понимаю надо сперва авторизоваться на инстаграме...

Авторизация на сайте через соцсеть - PHP
всем привет хочу сделать ауторизацию на саите через facebook нашол вариант на ютубе, но что-то не так пошло. 4 фаила: index.php...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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/
Ну а дальше смотрим что вернет сервер...
0
wowgamr
4 / 4 / 1
Регистрация: 11.11.2013
Сообщений: 51
31.03.2014, 12:32  [ТС] #3
Цитата Сообщение от Pro2005 Посмотреть сообщение
Как вы видите, тут даже есть еще один логин/пароль: login6965/passwd5659
Это названия блоков)

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

Авторизация на сайте через delphi - Delphi
Привет, у меня просьба помочь мне сделать программу для входа и выхода на сайт. link С чего начать хотя бы?

Авторизация на сайте через Facebook - PHP
Не работает авторизация на сайте через Facebook.. выдает ошибку: http://wpaperhd.com/account/facebook Строка 210: 210 throw new...

.NET 4.x Авторизация на сайте через https - C#
Всем привет есть прога она авторизует пользователей на сайте маил каждая авторизация запускается в отдельном потоке. Но есть проблема после...

Авторизация на сайте через программу - C#
Всем доброго времени суток. Уважаемые участники cyberforum.ru , я с недавних пор занимаюсь программированием на C# и у меня возникла...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.03.2014, 14:28
Ответ Создать тему
Опции темы

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