API Сбербанк

1. user1202776 11.02.21 18:26 Сейчас в теме
Пытаюсь подключиться к API Сбербанка, но выдает ошибку "{ "httpCode":"405", "httpMessage":"Method Not Allowed", "moreInformation":"The method is not allowed for the requested URL" }"
Ссылка на API инструкцию https://developer.sberbank.ru/api/5f2e703be4b05210f3423eeb
 СтрокаURI =  "https://dev.api.sberbank.ru/ru/prod/ratings/partner";
	СтруктураURI = СтруктураURI(СтрокаURI);
		HTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,,,,,Новый ЗащищенноеСоединениеOpenSSL);		

	Заголовки = Новый Соответствие();
	//Заголовки.Вставить("X-IBM-Client-Id","ad7f7d7f-bd5e-4331-8f8c-b095d570c6e7");
	Заголовки.Вставить("accept","application/json");
	Заголовки.Вставить("authorization","тут authorization");
	Заголовки.Вставить("x-ibm-client-id","тут id ");
	Заголовки.Вставить("x-introspect-rquid","1D002Ad15D9A2Cf4d4284EBdba14A94A");

		
				СтруктураДляJSON = Новый Структура("legal_inn","7707083893");
		СтруктураДляJSON.Вставить("model_id",5);
		Запись = Новый ЗаписьJSON;
		Запись.УстановитьСтроку();
		ЗаписатьJSON(Запись, СтруктураДляJSON);
		ТелоЗапроса = Запись.Закрыть();
		
			HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере, Заголовки); 
		HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса,КодировкаТекста.ANSI);
		
		HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
		ТекстОтветаJSON = HTTPОтвет.ПолучитьТелоКакСтроку();//здесь возвращается ответ запроса
Показать


Что делаю не так?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Степной 27 11.02.21 18:54 Сейчас в теме
(1) Возможно это должен быть запрос типа GET, а не POST.
3. Aitbay 11.02.21 19:42 Сейчас в теме
в качестве примера

HTTPСоединение = Новый HTTPСоединение("localhost",,"Логин","Пароль",,,);				
	HTTPЗапрос     = Новый HTTPЗапрос("/Kazn/hs/api/v1/adding");
	
	HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
	
	ЗаписьJSON      = Новый ЗаписьJSON;
	ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПредопределенноеЗначение("ПереносСтрокJSON.Нет"));
	
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
	
	НастройкиСериализации = Новый НастройкиСериализацииJSON;
	НастройкиСериализации.ВариантЗаписиДаты      = ПредопределенноеЗначение("ВариантЗаписиДатыJSON.ЛокальнаяДата");
	НастройкиСериализации.ФорматСериализацииДаты = ПредопределенноеЗначение("ФорматДатыJSON.ISO");
	
	ЗаписатьJSON(ЗаписьJSON, DocParam, НастройкиСериализации, "ПреобразованиеЗначений");
	
	HTTPЗапрос.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть(),"UTF-8", ИспользованиеByteOrderMark.НеИспользовать);
	СтрокаJS = HTTPЗапрос.ПолучитьТелоКакСтроку();
	
	HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Показать
5. user1202776 12.02.21 09:28 Сейчас в теме
(3)в запроса где должны находиться token,legal_inn,model_id,accept и x-Intospect-RqUID?
4. Aitbay 11.02.21 19:45 Сейчас в теме
https://sec.api.sberbank.ru/ru/prod/ratings/partner/legal/v1/rating/partner
и это get запрос
нужно использовать
HTTPСоединение.Получить(.....,......)
6. user1202776 12.02.21 10:47 Сейчас в теме
Пытаюсь так подключится, но выдает ошибку Ошибка работы с интернет: Не могу установить соединение
HTTPЗапрос = Новый HTTPЗапрос("/ratings/partner/v1/rating/partner?legal_inn=3418007166&model_id=5");
			
HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("authorization", "Bearer здесь токен");
HTTPЗапрос.Заголовки.Вставить("x-ibm-client-id", "здесь id");
HTTPЗапрос.Заголовки.Вставить("x-Introspect-RqUID", "e9FAE9fcee76276Ffdeb11b8A4Dde85e");



HTTPСоединение = Новый HTTPСоединение("dev.api.sberbank.ru");	
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
Показать
7. serg33rus 28 12.02.21 15:10 Сейчас в теме
(6) А куда вдруг пропал SSL???? Был и вдруг пропал. Поэтому и отфутболивает, как мне кажется.
8. user1202776 12.02.21 15:34 Сейчас в теме
(7)Да.
Теперь выдает ошибку 401 ( Приложение не авторизовано, либо некорректное значение client-id)
Client-id указываю верно
Там на сайте есть URL токена. Может его как-то надо использовать, но как?
10. serg33rus 28 12.02.21 18:51 Сейчас в теме
(8) А почему ты убрал X-IBM-Client-Id? Судя по документации эта хрень в header обязательна. И это один из элементов авторизации.
12. user1202776 12.02.21 19:31 Сейчас в теме
(10) Не убирал. В заголовке
13. serg33rus 28 12.02.21 20:53 Сейчас в теме
(12) Покажи тогда весь заголовок. Без значений, только ключи. В твоих примерах такого ключа нет вроде.
14. user1202776 12.02.21 21:12 Сейчас в теме
(13) в (6) посмотри
HTTPЗапрос.Заголовки.Вставить("x-ibm-client-id", "здесь id");
9. пользователь 12.02.21 15:40
Сообщение было скрыто модератором.
...
11. Aitbay 12.02.21 18:55 Сейчас в теме
ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
            Новый СертификатыУдостоверяющихЦентровWindows());

TTPСоединение = Новый HTTPСоединение("dev.api.sberbank.ru",443,,,,ssl1  );
15. serg33rus 28 12.02.21 22:07 Сейчас в теме
(11) Погоди. Я о другом. Покажи как ты заголовки заполняешь. Там есть заголовки обязательные к заполнению.
16. user1202776 12.02.21 22:11 Сейчас в теме
(15)все что делаю разместил в (6) .
Не понимаю о чем говоришь
17. serg33rus 28 12.02.21 22:19 Сейчас в теме
(16) Цитата с сайта Сбера:
X-IBM-Client-Id (apiKey находится в header)

Где у тебя этот заголовок. А это как раз элемент авторизации.
18. user1202776 12.02.21 22:48 Сейчас в теме
(17)я не понимаю как должно быть.Сможешь показать, как правильно должно быть?
19. serg33rus 28 12.02.21 23:37 Сейчас в теме
(18)
HTTPЗапрос.Заголовки.Вставить("x-ibm-client-id", "здесь id"); // здесь apiKey 
HTTPЗапрос.Заголовки.Вставить("x-Introspect-RqUID", "e9FAE9fcee76276Ffdeb11b8A4Dde85e"); // здесь Уникальный идентификатор запроса


Вот это надо вставить перед
HTTPСоединение = Новый HTTPСоединение("dev.api.sberbank.ru",443,,,,ssl1 );
20. user1202776 13.02.21 10:16 Сейчас в теме
(19) так?
HTTPЗапрос = Новый HTTPЗапрос("/ratings/partner/v1/rating/partner?legal_inn=3418007166&model_id=5");
            
HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("authorization", "Bearer здесь токен");
HTTPЗапрос.Заголовки.Вставить("x-ibm-client-id", "здесь id");
HTTPЗапрос.Заголовки.Вставить("x-Introspect-RqUID", "e9FAE9fcee76276Ffdeb11b8A4Dde85e");

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


HTTPСоединение = Новый HTTPСоединение("dev.api.sberbank.ru",443,,,,ssl1 );    
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
Показать
21. serg33rus 28 13.02.21 10:51 Сейчас в теме
(20) Да, так. Если дает 401, тогда все-таки посмотреть все ли в заголовках правильно.
22. user1202776 15.02.21 09:10 Сейчас в теме
23. user1202776 15.02.21 09:21 Сейчас в теме
HTTPЗапрос = Новый HTTPЗапрос("/ru/prod/ratings/partner/v1/rating/partner?legal_inn=3418007166&model_id=5");

так выдает ошибку 401


В HTTPОтвет.Заголовки:
Прикрепленные файлы:
24. serg33rus 28 15.02.21 10:30 Сейчас в теме
(23) 401 - это значит авторизация не прошла. Какие-то поле заголовка заполнено неверно.
25. user1202776 15.02.21 10:37 Сейчас в теме
(24)вроде все поля заполнил, но не могу понять в чем ошибка
26. serg33rus 28 15.02.21 11:06 Сейчас в теме
(25) 401 - это авторизация. С учетом того, что все нужные заголовки есть, остается грешить на их значения. Т.е. какие-то поля заполнены неверно и оно не пускает. Типа логина и пароля неверного. В данном случае вероятно вот это
HTTPЗапрос.Заголовки.Вставить("authorization", "Bearer здесь токен");
HTTPЗапрос.Заголовки.Вставить("x-ibm-client-id", "здесь id");
27. user1202776 15.02.21 11:10 Сейчас в теме
(26)в документации есть такой пункт как на скрине. Там какой-то динамический обновляемый токен. Может какую-то доп запрос нужно сделать?
authorization и x-ibm-client-id заполнил корректно.
28. serg33rus 28 15.02.21 11:39 Сейчас в теме
(27) Вот тут не подскажу. Сам с этим API не работал, если честно.
29. user1551752 25.02.21 10:48 Сейчас в теме
(27)С 1С не работаю, но имел аналогичную ошибку (Дельфи). По умолчанию включен параметр BasicAuthentication = true. И автоматически формируется вторая строка авторизации (после первой), сделанная из пустого Username и Password. Поищите где у Вас естьтакой параметр и отключите его.
30. user1202776 28.02.21 17:08 Сейчас в теме
(29)интересно, надо будет поискать что-то подобное
31. braynt 55 13.09.21 15:10 Сейчас в теме
(30) привет. получилось разобраться с авторизацией?
32. user1202776 04.10.21 09:30 Сейчас в теме
33. braynt 55 16.11.21 13:49 Сейчас в теме
(32) тоже получилось с авторизацией. но не могу отправить запрос на создание заказа.
ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
Новый СертификатыУдостоверяющихЦентровWindows());

	HTTPСоединение = Новый HTTPСоединение("dev.api.sberbank.ru",443,,,,,ssl1);
    Заголовки = Новый Соответствие();
  Заголовки.Вставить("accept","application/json");
	Заголовки.Вставить("content-type","application/x-www-form-urlencoded");
    Заголовки.Вставить("authorization","Bearer тут токен из автроизации");
    Заголовки.Вставить("x-ibm-client-id",client);
    Заголовки.Вставить("x-introspect-rquid",rquid);
        
		 HTTPЗапрос = Новый HTTPЗапрос("/ru/prod/order/v1/creation", Заголовки); 
        HTTPЗапрос.УстановитьТелоИзСтроки(Текст);
       СтрокаJS = HTTPЗапрос.ПолучитьТелоКакСтроку();
    
        HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
        ТекстОтветаJSON = HTTPОтвет.ПолучитьТелоКакСтроку();
Показать



"Ошибка" {"httpCode":"400","httpMessage":"Bad Request","moreInformation":"[JSV0002] Invalid object: the property 'x-introspect-rquid' is missing."}
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот