Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
iSerg
2 / 2 / 1
Регистрация: 20.08.2012
Сообщений: 29
1

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

19.11.2014, 23:10. Просмотров 1334. Ответов 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, но такой рукож..пый способ не подходит, но и не могу понять почему не работает правильно верхний код.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 23:10
Ответы с готовыми решениями:

NSURLSession, вытаскиваем данные
Все попытки добавления данных в виде addObject - безуспешны, массив остается...

Как отослать HTML с помощю Perl-a, так чтобы когда откроется почта, там была страница HTML-a?
Подскажите как отослать HTML с помощю Perl-a, так чтобы когда откроется почта,...

Страница с json и русские символы
вот есть такая страница...

Вместо сайта пустая страница
Друзья! У меня – уже давно сайт, посвященный Новому году, созданный несколько...

Пустая страница вместо сайта
Захожу на сайт, он нормально грузится и спустя 1-2 секунды начинает...

5
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
20.11.2014, 00:33 2
С URLSession не работал, пользуюсь обычно библиотекой AFNetworking. Вверху, где задаешь параметры запроса, там точно надо в формате NSString писать? Обычно параметры задаются как dictionary как набор ключ-значение.
0
iSerg
2 / 2 / 1
Регистрация: 20.08.2012
Сообщений: 29
20.11.2014, 00:56  [ТС] 3
Цитата Сообщение от vitali36 Посмотреть сообщение
С URLSession не работал, пользуюсь обычно библиотекой AFNetworking. Вверху, где задаешь параметры запроса, там точно надо в формате NSString писать? Обычно параметры задаются как dictionary как набор ключ-значение.
Везде в примерах, которые я видел, без словарей.
0
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
20.11.2014, 01:04 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];
Попробуй добавь.
0
iSerg
2 / 2 / 1
Регистрация: 20.08.2012
Сообщений: 29
20.11.2014, 01:30  [ТС] 5
Цитата Сообщение от vitali36 Посмотреть сообщение
Попробуй добавь.
К сожалению ничего не дало. Тупо возвращает html-страницу. Я даже специально ссылку кинул в браузер, и он показал мне json. Код не хочет =) Уже больше половины дня бъюсь над этим и никак не решу. Везде у всех работает.
0
vitali36
7 / 7 / 2
Регистрация: 09.02.2014
Сообщений: 91
20.11.2014, 01:54 6
Советую разобраться с afnetworking. Там гораздо все проще)
1
20.11.2014, 01:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 01:54

Вместо ошибок белая страница
У меня вместо любых ошибок выводится белая страница. Как я понял в PHP...

Вместо диалогового окна обновляется страница
Всем здравствуйте! У меня такой вопрос: я создал частичное представление,...

Иногда выскакивает белая страница вместо сайта
Добрый вечер. Все было хорошо, но... Недавно появилась проблема, причем очень...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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