Имя: Пароль:
1C
 
Проблема с post и get запросами к ФССП
0 s7cret
 
24.02.18
22:01
Добрый день. Если кто работал с post и get запросами к серверу подскажет что я не так делаю.

В общем ресурс это ФССП, точнее их API  для работы с их базой.



Пытаюсь послать запрос на сервер  Ключ - ZHtMJ2L0GOE3,  параметры задал, ответ в любом случае "403",  ошибка доступа.

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

Заранее благодарен.





СтрокаПараметров = " { \""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Запрос,ИмяВыходногоФайла);
1 s7cret
 
24.02.18
22:04
Пример get для одного лица, ошибка то же 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Запрос.АдресРесурса = Ресурс;
    
    ssl = Новый ЗащищенноеСоединениеOpenSSL;
    HTTP = Новый HTTPСоединение(Сервер,,,,,,ssl);  

    ОтветHTTP = HTTP.Получить(HTTPЗапрос);
2 s7cret
 
24.02.18
22:07
а так срабатывает,  но это через com


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();
3 Джексон
 
24.02.18
22:37
1) убери косые палки
2) зачем ты пхаешь что-то в тело запроса, если делаешь гет?
4 s7cret
 
24.02.18
23:44
(3)
Первое исправил, но ошибка осталась 403

по второму пробовал по разному и так и так, вот через get без тела запроса.
    АдресСервиса = "api-ip.fssprus.ru";
    АдресРесурса = "/api/v1.0/search/physical";
    СтрокаПараметров = "?token=ZHtMJ2L0GOE3&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";
    
    HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса + СтрокаПараметров);    
    HTTPСоединение = Новый HTTPСоединение(АдресСервиса, 443, , , , ,Новый ЗащищенноеСоединениеOpenSSL);
    Ответ = HTTPСоединение.Получить(HTTPЗапрос);
5 Fram
 
24.02.18
23:47
В чем смысл объекта ssl, если никакие параметры его не указываешь?
6 s7cret
 
25.02.18
00:01
(5) Смысл в том что таким образом задаем HTTPS подключение,  в большинстве случаев что успел посмотреть его таким
образом и определяют.
Пробовал и так

ssl1 = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),Новый СертификатыУдостоверяющихЦентровWindows());    


но результат тот же.
7 Fram
 
25.02.18
01:00
(6) Действительно..
Можно, конечно, заморочиться и отловить с помощью wireshark в чем разница (2) и (4), но, думаю, оно того не стоит. Просто используй (2)
8 s7cret
 
25.02.18
01:18
(7) а при больших объемах нагрузка через com как понимаю больше?
9 s7cret
 
25.02.18
14:16
?