|   |   | 
| 
 | v7: Curl1C | ☑ | ||
|---|---|---|---|---|
| 0
    
        alyuev 16.08.24✎ 18:36 | 
        Есть POST запрос, который выполняется строкой 
 Запрос1="curl --request POST --url """+АдресЗапроса+""" --header """+Хеадер1+""" --data """+Данные+""" -o """+РезФайл+""""; КомандаСистемы(Запрос1); //тут на выходе РезФайл, как и ожидали Хочу переделать на Карлика, но он не отрабатывает. В РезФайл возвращает текст ошибки (от сервера) 	ЗагрузитьВнешнююКомпоненту("curl1c.dll");
	Карлик = СоздатьОбъект("Карлик");
	Приемник = Карлик.Приемник;
	Приемник.Тип = 1;	//Файл
	Приемник.Данные =РезФайл;
	Карлик.УстановитьПараметр("URL",АдресЗапроса);
	Карлик.УстановитьПараметр("CUSTOMREQUEST","POST");
	Карлик.УстановитьПараметр("HTTPHEADER",Хеадер1);
	Карлик.Источник.Данные=""""+Данные+"""";
	КодВозврата = Карлик.Выполнить();КодВозврата = 422! Я что-то не так делаю? | |||
| 1
    
        MWWRuza 16.08.24✎ 19:21 | 
        Что в хидер1 - ?
 Я вот так устанавливаю заголовки: Если ПустоеЗначение(сзЗаголовки) = 0 Тогда СчЦикла = 0; Для СчЦикла = 1 По сзЗаголовки.РазмерСписка() Цикл ИмяЗаголовка = ""; ЗначениеЗаголовка = сзЗаголовки.ПолучитьЗначение(СчЦикла,ИмяЗаголовка); Если (ПустоеЗначение(ИмяЗаголовка) = 0) И (ПустоеЗначение(ЗначениеЗаголовка) = 0) Тогда Карлик.УстановитьПараметр("HTTPHEADER", ИмяЗаголовка +": "+ ЗначениеЗаголовка); КонецЕсли; КонецЦикла; КонецЕсли; И тут: Приемник.Данные =РезФайл; Я чего-то не понял... И тут: Приемник = Карлик.Приемник; Приемник.Тип = 1; //Файл Чтото не понятное... По идее, должно быть: Карлик.Приемник.Тип = 1; //Файл Приемник - это то, что в результате запроса с сервера прилетает: После Выполнить() должно быть: РезФайл = Карлик.Приемник.Данные; | |||
| 2
    
        MWWRuza 16.08.24✎ 19:03 | 
        Если не в этом дело, могу весь запрос работающий выложить, если интересно... Но, там у меня "черт ногу сломит", лишнего(ну, не совсем - для моих задач нужного) много...     | |||
| 3
    
        MWWRuza 16.08.24✎ 19:14 | 
        И в данных у Вас что?
 У меня так: Карлик.Источник.Тип = 0; Карлик.Источник.Данные = ТелоЗапр; Тело запроса в данном случае строка JSON... Что-то у Вас кавычек много, на первый взгляд... Покажите, что это за строка такая. | |||
| 4
    
        Djelf 16.08.24✎ 19:43 | 
        Слишком много данных... 
 Карлик.Источник.Данные=""""+Данные+""""; Ковычки то там зачем? Я могу их вырезать, нормализировать строку... потом... но это будет не очень корректно. | |||
| 5
    
        alyuev 19.08.24✎ 11:42 | 
        1) Я, вообще говоря, упростил формулировку. Т.к. по факту у меня 2 хедера и я использую 2 переменные.
 Если это важно, какие именно, то вот они: Хеадер1="Content-Type: application/json"; Хеадер2="xi-api-key: ИтутСобственноСамАпиКей"; Карлик.УстановитьПараметр("HTTPHEADER",Хеадер1); Карлик.УстановитьПараметр("HTTPHEADER",Хеадер2); 2) Далее "Приемник.Данные =РезФайл;" - я тут просто обобщил. По факту у меня там имя путь к результирующему файлу Приемник.Данные ="S:\output.txt"; 3) В источник я тоже передаю JSON. То, что кавычек много - это уже требование API такое. Тип не устанавливаю принудительно. Данные = """{\""text\"": \""Hello \"", \""voice_settings\"": {\""stability\"": 0.5,\""similarity_boost\"": 0.75},\""model_id\"": \""eleven_multilingual_v2\""}"""; //Карлик.Источник.Тип = 0; Карлик.Источник.Данные=Данные; ________________ По сути просто перенес значения параметров из РАБОЧЕЙ строки запроса (который выполняется через командную строку) в параметры Карлика. Но не взлетело. | |||
| 6
    
        alyuev 19.08.24✎ 11:45 | 
        API используется это: https://elevenlabs.io/docs/api-reference/text-to-speech     | |||
| 7
    
        smitti911 19.08.24✎ 14:28 | 
        Здравствуйте, только начал использовать Карлик (спасибо автору за труд).Есть ли какая-нибудь документация по данной длл? Пока все подсматриваю в архиве curl1c_1.0.0.16, в тестовом примере.
 Задача получать данные из системы мониторинга Wialon, некоторые запросы уже написал и все работает, но есть пара вопросов: 1) Карлик.УстановитьПараметр("URL",АдресЗапроса); Если АдресЗапроса в одну строку - все ок, если сделать с переводом строки, для компактности и лутшей читаемости - получаю: КодОшибки = Карлик.Выполнить();Ошибка получения данных 3 0 . Приходится писать конструкции типа АдресЗапроса = АдресЗапроса +" Но вдруг строка УРЛ будет слишком длинная, как тогда обойти этот момент. Пока максимум : АдресЗапроса ="https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items¶ms={""spec"":{""itemsType"":""avl_resource"",""propName"":""sys_name"",""propValueMask"":""*"",""sortType"":""sys_name"",""propType"":""drivers""},""force"":1,""flags"":256,""from"":0 ,""to"":0}&sid="+СокрЛП(СИД); Но это только начало работ... | |||
| 8
    
        MWWRuza 19.08.24✎ 17:19 | 
        (7) Но вдруг строка УРЛ будет слишком длинная, как тогда обойти  этот момент.
 А при чем тут вообще карлик? Обычная работа со строками... Что мешает сделать: АдресЗапроса = СтрЗаменить(АдресЗапроса, Симв(10), ""); АдресЗапроса = СтрЗаменить(АдресЗапроса, Симв(13), ""); Этим мы просто "вырежем" переводы строки из строки УРЛ, сколько бы их не было изначально... Или я не правильно понял Вашу задачу? | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |