Имя: Пароль:
1C
 
Не удается авторизоваться через POST запрос
0 Блондинка_
 
04.12.17
16:10
Добрый день! Подскажите пожалуйста, что я не так делаю. У меня есть описание запросов по API. Устанавливаю соединение, отправляю запрос на авторизацию, приходит ошибка 404. Ну я понимаю, неверный запрос или неверные параметры авторизации, но почему страница не найдена?!

Соединение=Новый HTTPСоединение(Объект.Адрес,80,,,,30,);
АдресURL="/api/workstation/clients/login";
Запрос= Новый HTTPЗапрос();
Запрос.АдресРесурса=АдресURL;
//параметры
Запрос.УстановитьТелоИзСтроки(СтрокаJS); //подготовленная строка в формате JSON
Ответ=Соединение.Получить(Запрос);
1 Lexey_
 
04.12.17
16:12
(0) что в Объект.Адрес?
2 Блондинка_
 
04.12.17
16:13
3 Блондинка_
 
04.12.17
16:13
Без  http://
4 Lexey_
 
04.12.17
16:19
Что в теле ответа?
5 Lexey_
 
04.12.17
16:20
Точно нужен гет, а не пост?
6 Блондинка_
 
04.12.17
16:24
(5) А это разве не пост запрос? Мне нужен как раз пост, ну вот я и отправляю ему параметры запроса. Или что-то не так?
7 Блондинка_
 
04.12.17
16:25
В теле ответа код состояния=404 и соответствие с заголовками об ошибках (дата, статус и какие-то еще параметры)
8 Lexey_
 
04.12.17
16:27
(6) это не пост
9 Юрий Лазаренко
 
04.12.17
16:30
Пост это не Получить, а ОтправитьДляОбработки в

Ответ=Соединение.Получить(Запрос);
10 Блондинка_
 
04.12.17
16:40
(8) (9) Ой блииииин) Ну я и туплю)
Спасибо огромное! Я поналепила кусков из теории, и даже не заметила что взяла пример сначала гет запроса
11 Блондинка_
 
04.12.17
16:44
Все равно какая-то хрень, теперь ошибка 501
501 Not Implemented
12 Блондинка_
 
04.12.17
17:01
{"result":{},"error":{"code":"501","message":"784: unexpected token at '?[{\"phone\":\"0952000200\",\"password\":\"RMZ1CHbFeN\"}]'"}}

Не хватает каких-то фигурных или квадратных скобок в запросе (нагуглила)? Так у меня в описании указано что в теле запроса должно быть
{
"phone":"0952000200",
"password":"RMZ1CHbFeN"
}
13 Lexey_
 
04.12.17
17:11
(12) а у тебя что в теле?
14 PloAl
 
04.12.17
17:13
(12) скорее всего надо урлкодировать значения:
КодироватьСтроку("0952000200",СпособКодированияСтроки.КодировкаURL)
КодироватьСтроку("RMZ1CHbFeN",СпособКодированияСтроки.КодировкаURL)
15 PloAl
 
04.12.17
17:17
да и от пароля скорее всего надо хеш получать, вот только какой, примерно так

Функция МД5(П) Экспорт
    
    Хеш = Новый ХешированиеДанных(ХешФункция.MD5);
    Хеш.Добавить(П);
    Возврат Хеш.ХешСумма;
    
КонецФункции
16 Блондинка_
 
04.12.17
17:25
(13) Пробовала и вот так {"phone":"0952000200","password":"RMZ1CHbFeN"}
и вот так в теле
[{"phone":"0952000200","password":"RMZ1CHbFeN"}]

(14) Чего-то не помогает..

А мне кажется или он на кавычки "ругается"?
17 Блондинка_
 
04.12.17
17:28
Пробовала также
СтрокаJSON = КодироватьСтроку(СтрокаJS, СпособКодированияСтроки.КодировкаURL);

Перед отправкой в теле запроса (тоже подсмотрела в сети), не помогло(((
18 ProgAL
 
04.12.17
17:39
Скачайте приложение Postman. И посмотрите ролики в сети как им пользоваться. Когда получите с помощью вручную набранного тела запроса корректный ответ, поймете что поправить в 1с.
19 Вафель
 
04.12.17
17:40
пароль и логин настоящие?
20 zippygrill
 
05.12.17
01:12
(0) Зайди сюда https://www.hurl.it/ и тестирую сначала что передавать..
21 Блондинка_
 
05.12.17
10:45
(20) тестирую, но все равно выходят ошибки, возможно потому что  сайт отправляет тело запроса как phone=0952000200&password=RMZ1CHbFeN а нужно через запятую, но как это поправить?
(19) Здесь нет, поправила пару символов, а вообще надеюсь что действующие) Если бы и нет, была бы ошибка авторизации
22 Блондинка_
 
05.12.17
13:45
Ура! Разобралась!) Спасибо всем за помощь.
Не хватало заголовка
Запрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
А также при установке строки в формате JSON нужно было ее форматировать
Запрос.УстановитьТелоИзСтроки(СтрокаJS, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ошибка? Это не ошибка, это системная функция.