Приходит пустой ответ с dadata.ru

1. rostovweb 19.12.21 02:00 Сейчас в теме
Всем привет! Пилю заполнение карточки контрагента по ИНН c сервиса dadata, приходит пустой запрос {"suggestions":[]}, подскажите в какую сторону копать.

Процедура ЗаполнитьПоИНН();
    ИНН = Объект.ИНН;
	Наименование = Объект.Наименование;
	ИмяВремФайла = ПолучитьИмяВременногоФайла();
	APIКлючDaData = Константы.APIКлючDaData.Получить();
	//XSecreet = Константы.СекретныйКлюч.Получить();
	ТелоЗапроса = Новый Структура;
            ТелоЗапроса.Вставить("query", ИНН);
            ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, , , , , , , , Ложь);
            ЗаписьJSON = Новый ЗаписьJSON;
            ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
            ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса);
            ТелоЗапросаСтрокой = ЗаписьJSON.Закрыть();
			SSL = Новый ЗащищенноеСоединениеOpenSSL();
			Сервер = "suggestions.dadata.ru";
			//СтрокаЗапроса = "/suggestions/api/4_1/rs/suggest/party";
			СтрокаЗапроса = "/suggestions/api/4_1/rs/findById/party";
			HTTPСоединение = Новый HTTPСоединение(сервер,,,,,, SSL);
			HTTPЗапрос = Новый HTTPЗапрос(СтрокаЗапроса);
			HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
            HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
            HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + APIКлючDaData);
			//HTTPЗапрос.Заголовки.Вставить("X-Secret", XSecreet);
			HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрокой,КодировкаТекста.UTF8);
			Попытка
				HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
					Исключение
				Сообщить("Произошла ошибка при отправке запроса");
			КонецПопытки;	
			Попытка
				HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
				ТекстJSON = HTTPОтвет.ПолучитьТелоКакСтроку();
			Исключение
				Сообщить("При отправке запроса произошла ошибка");
				Возврат;
			 КонецПопытки;	
			 Если HTTPОтвет = Неопределено Тогда
             Сообщить("Получен не верный ответ от сервера dadata.ru");
			 ИначеЕсли HTTPОтвет.КодСостояния <> 200 Тогда
					Сообщить("Получен не верный ответ от сервера dadata.ru");
			 КонецЕсли;
			ЧтениеJSON = Новый ЧтениеJSON;
			ЧтениеJSON.УстановитьСтроку(ТекстJSON);
			ОтветСервера = ПрочитатьJSON(ЧтениеJSON);
			ЧтениеJSON.Закрыть();
			Если ОтветСервера.количество() = 0 Тогда
		     Сообщить("Ни чего не найдено");
		 КонецЕсли;
		 Сообщить(ТекстJSON);	
КонецПроцедуры
Показать
По теме из базы знаний
Найденные решения
6. a30v 19.12.21 12:44 Сейчас в теме
(1) У меня ваш код работает
	APIКлючDaData = "Указать свой токен";
	ИНН = "7707782563";
	ТелоЗапроса = Новый Структура;
	ТелоЗапроса.Вставить("query", ИНН);
	
	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, , , , , , , , Ложь);
	
	ЗаписьJSON = Новый ЗаписьJSON;
	
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
	ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса);
	ТелоЗапросаСтрокой = ЗаписьJSON.Закрыть();
	
	SSL = Новый ЗащищенноеСоединениеOpenSSL();
	Сервер = "suggestions.dadata.ru";
	СтрокаЗапроса = "/suggestions/api/4_1/rs/findById/party";
	HTTPСоединение = Новый HTTPСоединение(Сервер,,,,,, SSL);
	HTTPЗапрос = Новый HTTPЗапрос(СтрокаЗапроса);
	HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
	HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
	HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + APIКлючDaData);
	HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрокой,КодировкаТекста.UTF8);
	Попытка
		HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
		JSON = HTTPОтвет.ПолучитьТелоКакСтроку();
		Сообщить(JSON);
	Исключение
		Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
	КонецПопытки;

Показать

Нужный ответ приходит.
Merkalov; rostovweb; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. a30v 19.12.21 11:54 Сейчас в теме
(1) Покажите тело запроса. Может там пробелы передаются или что-то не то.
3. rostovweb 19.12.21 11:57 Сейчас в теме
(2)
{
"query": "7707782563"
}
Вроде все корректно...
4. a30v 19.12.21 12:12 Сейчас в теме
(3) Вы каким методом отправляете запрос и получаете {"suggestions":[]}? POST или GET? В приведенном коде указаны оба.
5. rostovweb 19.12.21 12:22 Сейчас в теме
6. a30v 19.12.21 12:44 Сейчас в теме
(1) У меня ваш код работает
	APIКлючDaData = "Указать свой токен";
	ИНН = "7707782563";
	ТелоЗапроса = Новый Структура;
	ТелоЗапроса.Вставить("query", ИНН);
	
	ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, , , , , , , , Ложь);
	
	ЗаписьJSON = Новый ЗаписьJSON;
	
	ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
	ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса);
	ТелоЗапросаСтрокой = ЗаписьJSON.Закрыть();
	
	SSL = Новый ЗащищенноеСоединениеOpenSSL();
	Сервер = "suggestions.dadata.ru";
	СтрокаЗапроса = "/suggestions/api/4_1/rs/findById/party";
	HTTPСоединение = Новый HTTPСоединение(Сервер,,,,,, SSL);
	HTTPЗапрос = Новый HTTPЗапрос(СтрокаЗапроса);
	HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
	HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
	HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + APIКлючDaData);
	HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрокой,КодировкаТекста.UTF8);
	Попытка
		HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
		JSON = HTTPОтвет.ПолучитьТелоКакСтроку();
		Сообщить(JSON);
	Исключение
		Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
	КонецПопытки;

Показать

Нужный ответ приходит.
Merkalov; rostovweb; +2 Ответить
7. rostovweb 19.12.21 12:54 Сейчас в теме
(6)
APIКлючDaData = "Указать свой токен";
ИНН = "7707782563";
ТелоЗапроса = Новый Структура;
ТелоЗапроса.Вставить("query", ИНН);

ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, , , , , , , , Ложь);

ЗаписьJSON = Новый ЗаписьJSON;

ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса);
ТелоЗапросаСтрокой = ЗаписьJSON.Закрыть();

SSL = Новый ЗащищенноеСоединениеOpenSSL();
Сервер = "suggestions.dadata.ru";
СтрокаЗапроса = "/suggestions/api/4_1/rs/findById/party";
HTTPСоединение = Новый HTTPСоединение(Сервер,,,,,, SSL);
HTTPЗапрос = Новый HTTPЗапрос(СтрокаЗапроса);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + APIКлючDaData);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрокой,КодировкаТекста.UTF8);
Попытка
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
JSON = HTTPОтвет.ПолучитьТелоКакСтроку();
Сообщить(JSON);
Исключение
Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Показать

(6)
(6)

Странно, Ваш код как раз работает...
Оставьте свое сообщение

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