Вход | Регистрация


1С:Предприятие ::

Метки: 

Проблема с post и get запросами к ФССП

Я
   s7cret
 
26.02.18 - 13:23
Добрый день. Если кто работал с post и get запросами к серверу подскажет что я не так делаю.
В общем ресурс это ФССП, точнее их API  для работы с их базой.
Пытаюсь послать запрос на сервер  Ключ - ZHtMJ2L0GOE3,  параметры задал, ответ в любом случае "403",  ошибка доступа.

Пример из документации тоже не меняет ситуации https://api-ip.fssprus.ru/swagger

Пример через POST

СтрокаПараметров = " { ""token"": ""ZHtMJ2L0GOE3"", ""request"": [ { ""type"": 1, ""params"": { ""firstname"": ""КИРИЛЛ"", ""lastname"": ""МИТРОФАНОВ"", ""secondname"": """", ""region"": ""0"", ""birthdate"": """" } }}";
Сервер = "api-ip.fssprus.ru";      Ресурс = "/api/v1.0/search/group";
HTTPЗапрос = Новый HTTPЗапрос;
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаПараметров);
HTTPЗапрос.АдресРесурса = Ресурс;
ssl = Новый ЗащищенноеСоединениеOpenSSL;
HTTP = Новый HTTPСоединение(Сервер,,,,,,ssl);  
ИмяВыходногоФайла = ПолучитьИмяВременногоФайла();
HTTPЗапрос.Заголовки.Вставить("accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
ОтветHTTP = HTTP.ОтправитьДляОбработки(HTTPЗапрос,ИмяВыходногоФайла);


Пример через GET

СтрокаПараметров = "?token=ZHtMJ2L0GOE31&region=0&firstname=%D0%9A%D0%98%D0%A0%D0%98%D0%9B%D0%9B&secondname=%D0%98%D0%93%D0%9E%D0%A0%D0%95%D0%92%D0%98%D0%A7&lastname=%D0%9C%D0%98%D0%A2%D0%A0%D0%9E%D0%A4%D0%90%D0%9D%D0%9E%D0%92&birthdate=08.04.1981";
Сервер = "api-ip.fssprus.ru";
Ресурс = "/api/v1.0/search/physical";  
HTTPЗапрос = Новый HTTPЗапрос;
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаПараметров);
HTTPЗапрос.АдресРесурса = Ресурс;    
ssl = Новый ЗащищенноеСоединениеOpenSSL;
HTTP = Новый HTTPСоединение(Сервер,,,,,,ssl);  
ОтветHTTP = HTTP.Получить(HTTPЗапрос);


В двух случаях в отчете код отчета сервер 403 "Доступ к ресурсу запрещен"
А вот через com все норм, вопрос что не так я делаю?)


Пример через COM(GET)

WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2,"utf-8");
WinHttp.Open("GET", "https://api-ip.fssprus.ru/api/v1.0/search/physical?token=ZHtMJ2L0GOE31®ion=0&firstname=КИРИЛЛ&secondname=ИГОРЕВИЧ&lastname=МИТРОФАНОВ&birthdate=08.04.1981";;);
WinHttp.Send();
РезультатСтр = WinHttp.ResponseText();
 
 
   s7cret
 
1 - 26.02.18 - 16:11
?
   s7cret
 
2 - 26.02.18 - 16:45
+
   FIXXXL
 
3 - 26.02.18 - 17:12
(0) ну во-первых есть разница в передаваемых параметрах, Отчество, ДатаРождения
во-вторых в первом примере попробуй добавить
"physical="
HTTPЗапрос.УстановитьТелоИзСтроки("physical="+СтрокаПараметров);
   s7cret
 
4 - 26.02.18 - 17:17
(3) Попробовал так но ошибка осталась 403

СтрокаПараметров = " { ""token"": ""ZHtMJ2L0GOE3"", ""request"": [ { ""type"": 1, ""params"": { ""firstname"": ""КИРИЛЛ"", ""lastname"": ""МИТРОФАНОВ"", ""secondname"": """", ""region"": ""0"", ""birthdate"": """" } }}";
Сервер = "api-ip.fssprus.ru";      Ресурс = "/api/v1.0/search/group";
HTTPЗапрос = Новый HTTPЗапрос;
HTTPЗапрос.УстановитьТелоИзСтроки("physical="+СтрокаПараметров);    
HTTPЗапрос.АдресРесурса = Ресурс;
ssl = Новый ЗащищенноеСоединениеOpenSSL;
HTTP = Новый HTTPСоединение(Сервер,,,,,,ssl);   
ИмяВыходногоФайла = ПолучитьИмяВременногоФайла();
HTTPЗапрос.Заголовки.Вставить("accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
ОтветHTTP = HTTP.ОтправитьДляОбработки(HTTPЗапрос,ИмяВыходногоФайла);    
 
По Отчеству и Дата рождения не проблема, в противном случае была бы ошибка 400 или 401 согласно документации.
   s7cret
 
5 - 26.02.18 - 17:20
(3) Такое чувство, как будто он не видит токен.
   dezss
 
6 - 26.02.18 - 17:25
в первом нет даты рождения и регион - строка, хз, важно ли это
   FIXXXL
 
7 - 26.02.18 - 17:26
(4)  ну попробуй строку собрать руками, что бы она стала похожа на строку ссылки из третьего примера
прям вот в Ресурс напиши "/api/v1.0/search/"+СтрокаРуками

кстати, у тебя в первом примере
Ресурс = "/api/v1.0/search/group";
а в третьем никакого "group"
   dezss
 
8 - 26.02.18 - 17:26
(6) + просто может валиться при валидации
   dezss
 
9 - 26.02.18 - 17:27
(7) первый и третий - это разные запросы, к разным ресурсам АПИ.
   s7cret
 
10 - 26.02.18 - 17:28
(7)  В первом через post для группового запроса по физ. лицам.

А во втором и третьем get для запроса по одному физ лицу

как в api описано 

https://api-ip.fssprus.ru/swagger
 
  Рекламное место пустует
   FIXXXL
 
11 - 26.02.18 - 17:29
(9) а где в третьем SSL?
   FIXXXL
 
12 - 26.02.18 - 17:30
(10) да, уже понял :)
   dezss
 
13 - 26.02.18 - 17:30
(е-мое!!!)

В Гете нет тела!!!!
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаПараметров);

Надо вот так:
HTTPЗапрос.АдресРесурса = Ресурс + СтрокаПараметров;
   dezss
 
14 - 26.02.18 - 17:31
(13) это во втором твоем запросе, если что
   s7cret
 
15 - 26.02.18 - 17:31
(8) самое странное что через com точно такая строка, но как понимаю технологии разные.  

Пробовал залогиниться с помощью логина и пароля, проблема не решается так же. В самом api описано что доступ предоставляется только по переданному ключу.
   dezss
 
16 - 26.02.18 - 17:31
(15) не такая....
читай (13)
   s7cret
 
17 - 26.02.18 - 17:35
(13) Ошибка такая же 403 ,  и так пробовал и еще раз проверил)
СтрокаПараметров = "?token=ZHtMJ2L0GOE31&region=0&firstname=%D0%9A%D0%98%D0%A0%D0%98%D0%9B%D0%9B&secondname=%D0%98%D0%93%D0%9E%D0%A0%D0%95%D0%92%D0%98%D0%A7&lastname=%D0%9C%D0%98%D0%A2%D0%A0%D0%9E%D0%A4%D0%90%D0%9D%D0%9E%D0%92&birthdate=08.04.1981";
Сервер = "api-ip.fssprus.ru";
Ресурс = "/api/v1.0/search/physical";  
HTTPЗапрос = Новый HTTPЗапрос; 
HTTPЗапрос.АдресРесурса = Ресурс + СтрокаПараметров;    
HTTP = Новый HTTPСоединение(Сервер,,,,,,Новый ЗащищенноеСоединениеOpenSSL);   
ОтветHTTP = HTTP.Получить(HTTPЗапрос);
   dezss
 
18 - 26.02.18 - 17:36
(17) хм...а почему у тебя ЗащищенноеСоединениеOpenSSL, а не просто ЗащищенноеСоединение?
   dezss
 
19 - 26.02.18 - 17:37
(18) тьфу....дел...вечер, домой уже хочется)
   s7cret
 
20 - 26.02.18 - 17:59
++
   s7cret
 
21 - 26.02.18 - 18:42
Компактный get запрос, ошибка та же  403


HTTP = Новый HTTPСоединение("api-ip.fssprus.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL);   
ОтветHTTP = HTTP.Получить(Новый HTTPЗапрос("/api/v1.0/result?token=ZHtMJ2L0GOE3&task=cc610b85-7190-4576-8357-c39b2a29ae16"));
   Вафель
 
22 - 26.02.18 - 18:44
ну так доступ же запрещен, что тебе не понятно то?
Логин и пароль не верный значит
   s7cret
 
23 - 26.02.18 - 18:50
(22) Логин и пароль не влияют так как в варианте через COM(GET)

WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2,"utf-8");
WinHttp.Open("GET", "https://api-ip.fssprus.ru/api/v1.0/search/physical?token=ZHtMJ2L0GOE31®ion=0&firstname=КИРИЛЛ&secondname=ИГОРЕВИЧ&lastname=МИТРОФАНОВ&birthdate=08.04.1981";;;);
WinHttp.Send();
РезультатСтр = WinHttp.ResponseText();

Все на ок и без них. В документации описано что нет необходимости логинится, достаточно передавать токен, но все же проверил ошибка та же код 403(пробовал и ранее)
   s7cret
 
24 - 26.02.18 - 19:39
+
   s7cret
 
25 - 26.02.18 - 21:10
ап+
   oleg_km
 
26 - 26.02.18 - 22:26
ну в фиддлере сравните, что отсылает ком, а что 1С
   Fram
 
27 - 26.02.18 - 22:33
(26) я ему предлагал уже в его прошлой ветке либо забить и использовать com либо отловить пакеты и посмотреть отличие (в результате все равно забить). но ежики кололись ...
   Fram
 
28 - 26.02.18 - 22:36
(0) попробуй, в поддержку 1С или этого сервиса отослать свой вопрос. может кто нить из них даст внятный ответ.
   Джексон
 
29 - 27.02.18 - 08:49
s7cret, давай уже третью ветку по этому вопросу заводи. Пора.
   s7cret
 
30 - 27.02.18 - 10:00
(27) тут уже дело принципа), думал просто что я не учет чего то.
   s7cret
 
31 - 27.02.18 - 10:01
(29) не время для зй ветки,  я 2 создал чтобы все имеющиеся данные из первой структурировать. Данных для 3й недостаточно)
   dezss
 
32 - 27.02.18 - 10:38
Вы будете смеяться, но я разобрался)))
Надо в заголовках установить 
    Заг.Вставить("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36");

Они не шлют ответов 1с-ке))))
   dezss
 
33 - 27.02.18 - 10:53
Отпишись, у тебя получилось?
 
 
   Fram
 
34 - 27.02.18 - 11:25
(32) блин, точно! наталкивался же уже на такое. забыл.
Даже вот такой заголовок прокатывает
    Заголовки.Вставить("User-Agent", "xuy");
   Fram
 
35 - 27.02.18 - 11:25
Главное чтоб ключ User-Agent был в заголовке
   Джексон
 
36 - 27.02.18 - 11:29
(32) Ура. Слава Герою, который смог запустить Fiddler.
   dezss
 
37 - 27.02.18 - 11:50
(34) (35) неа, ключ есть, но в нем что-то вроде 1C+Enterprize и его не пропускает.
(36) И тебя туда же. Просто появился повод слегка изучить этот момент. А вот ты не смог)
   Fram
 
38 - 27.02.18 - 11:51
(37) у меня абсолютно любой произвольный User-Agent проходит
   Джексон
 
39 - 27.02.18 - 11:52
(37) А оно мне надо? Я сюда деградировать захожу, а не ваши ребусы решать.
   s7cret
 
40 - 27.02.18 - 11:54
(32) Это круто !!) ГИП ГИП УРА УРА УРА,
Как я понял проверка с браузер запрос происходит или нет?
   dezss
 
41 - 27.02.18 - 11:56
(38) именно на этот сайт?
ну хз, у меня 1с-ка сама определяла этот заголовок, тогда возвращался 403, а как только копирнул заголовок из хрома, то все стало гут.
   Fram
 
42 - 27.02.18 - 11:58
(41) попробуй любой произвольный набор букв
   s7cret
 
43 - 27.02.18 - 11:58
User Agent — это клиентское приложение, использующее определённый сетевой протокол. Термин обычно используется для приложений, осуществляющих доступ к веб-сайтам, таким как браузеры, поисковые роботы (и другие «пауки»), мобильные телефоны и другие устройства.
   dezss
 
44 - 27.02.18 - 11:58
(40) как один товарищ рассказал, обычно этот заголовок ни на что не влияет, но если на серваке поставить усиленную безопасность, то они отправляют ответы только при определенных значениях этого заголовка. По крайней мере я понял его объяснения как-то так.
   dezss
 
45 - 27.02.18 - 12:01
(42) ну да, проходит.
впадлу опять проксю запускать, чтоб смотреть что конкретно 1с-ка в этот заголовок добавляла.
   dezss
 
46 - 27.02.18 - 12:02
(42) поставь такой:
Заг.Вставить("User-Agent","1C+Enterprise");
)))
   Fram
 
47 - 27.02.18 - 12:06
(46) да, забавно.. заворачивает именно на этом заголовке. все остальное, даже полный бред пропускает их nginx
   dezss
 
48 - 27.02.18 - 12:19
(47) даже если в бреде где-то встречается 1C+Enterprise, то заворачивает на 403.
   Fram
 
49 - 27.02.18 - 12:32
На лицо явный саботаж ))
 
 
   Fram
 
50 - 27.02.18 - 12:38
моему возмущению нет предела!
   s7cret
 
51 - 27.02.18 - 12:40
(49) Кто то против 1с походу) может заспамили их.



Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует