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

Objective-C

Войти
Регистрация
Восстановить пароль
 
iSerg
2 / 2 / 1
Регистрация: 20.08.2012
Сообщений: 29
#1

NSURLSession: html-страница вместо json - Objective-C

19.11.2014, 23:10. Просмотров 1060. Ответов 5
Метки нет (Все метки)

Доброго вечера. Пытаюсь пройти регистрацию на сайте. Создаю запрос, метод POST. Но вместо ожидаемого json`а, мне возвращается html-страница.

Также проверил полный созданный URL на Rest Client`е, все работает, в приложение приходит json.

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
NSString *paramsRegistrationURL = [NSString stringWithFormat:@"/register?email=&name=%@&surname=%@&phone=%@",
                                                                                                      params[0],
                                                                                                      params[1],
                                                                                                      params[2]];
        
        NSURLSessionConfiguration *currentSessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
        NSURLSession *currentSession = [NSURLSession sessionWithConfiguration:currentSessionConfig];
        NSURL *mainRegistrationURL = [NSURL URLWithString:HTTPMainURL];
        NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:mainRegistrationURL];
        
        [urlRequest setHTTPMethod:@"POST"];
        [urlRequest setHTTPBody:[paramsRegistrationURL dataUsingEncoding:NSUTF8StringEncoding]];
        [urlRequest addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        
        NSLog(@"Method:%@ URL:%@%@", urlRequest.HTTPMethod, urlRequest.URL.absoluteString, [[NSString alloc] initWithData:[urlRequest HTTPBody] encoding:NSUTF8StringEncoding]);
        
        NSURLSessionDataTask *currentSessionDataTask = [currentSession dataTaskWithURL:urlRequest.URL.absoluteURL
                                                        completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                            
//                                                            NSString *strdata = [*[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                                                            NSString *strdata = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                                                            NSLog(@"Response: %@ %@\n", strdata, error);
                                                            
                                                            if (!error) {
                                                                
                                                                NSHTTPURLResponse *httpResp = (NSHTTPURLResponse*) response;
                                                                
                                                                if (httpResp.statusCode == 200) {
                                                                    
                                                                    NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
                                                                    NSLog(@"result json: %@ Error: %@", jsonArray, error);
                                                                }
                                                            }
                                                        }];
НО, если я просто пропишу без всяких заморочек и конфигов:

Objective-C
1
2
3
4
5
6
7
NSURLSessionDataTask *currentSessionDataTask = [currentSession dataTaskWithURL:[NSURL URLWithString:@"http://somecustomsite.xx/api/register?email=&name=serg&surname=petr&phone="] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
            
            NSString *strdata = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"Response: %@ %@\n", strdata, error);
 
        }];
        [currentSessionDataTask resume];
то приходит json, но такой рукож..пый способ не подходит, но и не могу понять почему не работает правильно верхний код.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 23:10     NSURLSession: html-страница вместо json
Посмотрите здесь:

Perl Как отослать HTML с помощю Perl-a, так чтобы когда откроется почта, там была страница HTML-a?
Objective-C Парсинг HTML кода
Objective-C JSON
Посоветуйте JSON framework Objective-C
парсинг JSON Objective-C
Objective-C NSDictionary и JSON
Objective-C NSAttributedString - Как вставить HTML?
Страница с json и русские символы PHP
Objective-C JSON парсинг из базы в таблицу
Парсинг JSON из локального файла Objective-C
Objective-C NSURLSession, вытаскиваем данные
Парсер JSON (возникает ошибка) Objective-C

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
20.11.2014, 00:33     NSURLSession: html-страница вместо json #2
С URLSession не работал, пользуюсь обычно библиотекой AFNetworking. Вверху, где задаешь параметры запроса, там точно надо в формате NSString писать? Обычно параметры задаются как dictionary как набор ключ-значение.
iSerg
2 / 2 / 1
Регистрация: 20.08.2012
Сообщений: 29
20.11.2014, 00:56  [ТС]     NSURLSession: html-страница вместо json #3
Цитата Сообщение от vitali36 Посмотреть сообщение
С URLSession не работал, пользуюсь обычно библиотекой AFNetworking. Вверху, где задаешь параметры запроса, там точно надо в формате NSString писать? Обычно параметры задаются как dictionary как набор ключ-значение.
Везде в примерах, которые я видел, без словарей.
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
20.11.2014, 01:04     NSURLSession: html-страница вместо json #4
Ради интереса посмотрел, как работать с URLSesson. Слишком много конфигураций. Но посмотри тут: http://stackoverflow.com/questions/8...surlconnection у тебя этих строк нет
Objective-C
1
2
3
[request setValue:[NSString stringWithFormat:@"%i",postData.length] forHTTPHeaderField:@"Content-Length"];
[request setHTTPShouldHandleCookies:YES];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
Попробуй добавь.
iSerg
2 / 2 / 1
Регистрация: 20.08.2012
Сообщений: 29
20.11.2014, 01:30  [ТС]     NSURLSession: html-страница вместо json #5
Цитата Сообщение от vitali36 Посмотреть сообщение
Попробуй добавь.
К сожалению ничего не дало. Тупо возвращает html-страницу. Я даже специально ссылку кинул в браузер, и он показал мне json. Код не хочет =) Уже больше половины дня бъюсь над этим и никак не решу. Везде у всех работает.
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
20.11.2014, 01:54     NSURLSession: html-страница вместо json #6
Советую разобраться с afnetworking. Там гораздо все проще)
Yandex
Объявления
20.11.2014, 01:54     NSURLSession: html-страница вместо json
Ответ Создать тему
Опции темы

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