Имя: Пароль:
1C
 
В результате POST запроса КодСостояния=405
0 SeriyP
 
20.04.18
11:11
Комрады! Направьте в нужную сторону с POST запросом к API с авторизацией по ключу.
Исходные данные: https://ekfgroup.com/podderzhka/download раздел "API для партнеров"  

APIKey = ПолученныйПоEmailКлюч;
Соединение = Новый HTTPСоединение("ekfgroup.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Заголовки = Новый Соответствие;    
Заголовки.Вставить("Authorization", "Bearer "+APIKey);
Заголовки.Вставить("Accept-Language", "ru");
Заголовки.Вставить("Accept-Charset", "utf-8");
Заголовки.Вставить("Content-Language", "ru");
Заголовки.Вставить("Content-Charset", "utf-8");
Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
Запрос = Новый HTTPЗапрос("/api/1/ekf/catalog/files", Заголовки);
Запрос.УстановитьТелоИзСтроки("vendorCode=mcb4763-1-01C-pro",КодировкаТекста.UTF8);
Результат = Соединение.ОтправитьДляОбработки(Запрос);

Соответственно, Результат.КодСостояния = 405, данные не загружаются.
Как победить?
1 Lexey_
 
20.04.18
11:22
(0) читай, что в ответе приходит
2 SeriyP
 
20.04.18
11:26
(1) Результат.Заголовки
Ключ    Значение
"Transfer-Encoding"    "chunked"
"date"    "Fri, 20 Apr 2018 11:23:42 GMT"
"allow"    "GET, HEAD"
"Content-Type"    "text/html; charset=UTF-8"
"Connection"    "keep-alive"
"Cache-Control"    "no-cache, private"
"X-Powered-By"    "PHP/7.1.14"
"Server"    "nginx/1.12.2"


В Результат.ПолучитьТелоКакСтроку() - html код. Вкратце:  "Whoops, looks like something went wrong".
3 SeriyP
 
20.04.18
11:54
Идеи?
4 SeriyP
 
20.04.18
14:39
up
5 drei
 
20.04.18
15:39
(2) > "allow"    "GET, HEAD"
6 SeriyP
 
20.04.18
15:43
(5) 405: Method Not Allowed
Выполнение метода, определенного в запросе, не разрешено для ресурса, идентифицированного конкретным адресом. Ответ должен содержать Allow заголовок, со списком разрешенных методов для запрашиваемого ресурса.

Не к тому ресурсу обращаюсь раз поддерживается только GET, HEAD?
7 drei
 
20.04.18
15:53
(6) Прально. Урл должен включать параметры.
8 SeriyP
 
20.04.18
16:09
(7) Делаю
Запрос = Новый HTTPЗапрос("/api/1/ekf/catalog/files? vendorCode=mcb4763-1-01C-pro", Заголовки)
Результат тот же. что должно быть в теле запроса?
9 Lexey_
 
20.04.18
16:16
(8)  Соединение.ОтправитьДляОбработки() или  Соединение.Получить() ?
10 SeriyP
 
20.04.18
17:28
(9) Соединение.ОтправитьДляОбработки()
11 Lexey_
 
20.04.18
20:46
(10) get это Получить()
12 Широкий
 
20.04.18
21:29
Там же ясно написано - через параметры ты должен передавать
Вот и пример есть:
URL: https://ekfgroup.com/api/1/ekf/catalog/files?id=0001cc0d-efa2-11e6-bd2e-000c29c6d5f2
13 SeriyP
 
23.04.18
08:48
(12) А что в запросе-то писать?
14 Широкий
 
23.04.18
09:13
Запрос = Новый HTTPЗапрос("/api/1/ekf/catalog/files?vendorCode=mcb4763-1-01C-pro", Заголовки);
Результат = Соединение.ОтправитьДляОбработки(Запрос);

Что то типа этого
15 zva
 
23.04.18
09:17
(13) Запрос.УстановитьТелоИзСтроки("", КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

Я бы еще попробовал APIKey в кавычках послать, а то из их документации не ясно: •API-KEY должен быть указан в HEADER каждого запроса в атрибуте Authorization. Запись вида: Bearer "ваш API-KEY".
Заголовки.Вставить("Authorization", "Bearer "+""""+APIKey+"""");

А лучше Postman поставить пробовать вызвать какой-нить метод
16 Широкий
 
23.04.18
09:18
(15) Он уже передает
17 SeriyP
 
23.04.18
09:25
(14) (15) Попробовал - результат тот же.

Соединение = Новый HTTPСоединение("ekfgroup.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Заголовки = Новый Соответствие;    
Заголовки.Вставить("Authorization", "Bearer "+""""+APIKey+"""");
Запрос = Новый HTTPЗапрос("/api/1/ekf/catalog/files?vendorCode=mcb4763-1-01C-pro", Заголовки);
Запрос.УстановитьТелоИзСтроки("", КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Результат = Соединение.ОтправитьДляОбработки(Запрос);
18 Lexey_
 
23.04.18
09:48
(17) см (11)
19 SeriyP
 
23.04.18
09:53
(18) Поясните подробнее? На запрос типа GET возвращается ошибка 404. И разработчик пишет именно про POST
20 SeriyP
 
23.04.18
09:55
(15) Попробовал через Postman поотправлять запросы. Результат тот же - ошибка 405.
21 zva
 
23.04.18
10:01
а если Заголовки.Вставить("Content-Type", "application/json");

вообще, лучше разработчику написать
22 Широкий
 
23.04.18
10:06
Пиши разрабам. Выплевывает HTML - значит в документации что то не клеится
23 SeriyP
 
23.04.18
10:17
(22) мда, видать действительно что-то не стыкуется. Буду пробовать с разработчиком общаться.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший