Группа: Пользователи
Сообщений: 21
Спасибо сказали: 20 раз
Рейтинг: 0
Добрый день. Мало что понимаю в API, и с ним связанном. Нужно из 1с77 отправить запрос по API методом POST. Отправить нужно запрос в формате json сюда: lc.epicentrk.com.ua/api/292/{секретный_ключ}/INVOICE_DATA
делаю:
Если ЗагрузитьВнешнююКомпоненту("v7plus.dll") = 0 Тогда Сообщить("не удалось найти компоненту v7plus.dll", "!!!"); Возврат; КонецЕсли; Попытка Соединение = СоздатьОбъект("Addin.V7HttpReader"); Исключение Сообщить("Ошибка подключения! (" + ОписаниеОшибки() + ")", "!!!"); КонецПопытки;
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(whtblck @ 17.11.16, 17:40)
HTTP/1.1 500 Internal Server Error в файле-ответе: {"Message":"An error has occurred."}
Это говорит о том, что ошибка выполнения произошла на самом сервере, вероятно вы передаете ему что-то чего он не ждет, не тот формат данных, или не те данные.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 0
Цитата(Мичман Харитонов @ 17.11.16, 18:06)
А протокол используется http или https? Если второе, то у v7plus.dll с ним возможны проблемы...
Согласен на все 100 %, но проблемы будут во всех случаях. Не буду останавливаться конкретно на проблемах при работе с этой "штучкой", но основная это обрезка данных (на просторах валом инфы о проблемах). Могу предложить такой вариант:
Функция ОтправитьЗапросПост(СекретныйКлюч,прИмяФайла)//Имя файла - "d:\1cv77bd\Temp\test.json"
лпСайт="https://lc.epicentrk.com.ua/api/292/"+СекретныйКлюч+"/INVOICE_DATA";//"https" должно быть, я так считаю
WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"utf-8"); //Отключаем проверку сертификата Скрипт= СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.language="javascript"; Скрипт.AddObject("WinHttp",WinHttp); Скрипт.Eval("WinHttp.Option(4)=13056");//intSslErrorIgnoreFlags Скрипт.Eval("WinHttp.Option(6)=true");//blnEnableRedirects Скрипт.Eval("WinHttp.Option(12)=true");//blnEnableHttpsToHttpRedirects //Сам запрос WinHttp.Open("POST", лпСайт, 0); WinHttp.SetRequestHeader("Accept-Language", "ru");// думаю что "ru"... WinHttp.SetRequestHeader("Accept-Charset", "utf-8"); WinHttp.SetRequestHeader("Content-Language", "ru"); WinHttp.SetRequestHeader("Content-Charset", "utf-8"); WinHttp.SetRequestHeader("Content-type", "application/octet-stream; charset=utf-8;");//Другая сторона должна понять входные данные см.oADOStream, а вот если вдруг не поймет (в чем у меня есть сомнения...), тогда придется указать явное без указания параметров выше: //WinHttp.setRequestHeader("Accept", "text/json"); //WinHttp.setRequestHeader("Content-type", "text/json"); //при явном строка ниже не нужна: WinHttp.SetRequestHeader("Content-length", "" + oADOStream.Size);
Попытка WinHttp.Send(oADOStream); //При явном - строку запроса нужно получить из файла, тогда получится: // WinHttp.Send(строка запроса из файла); лпОтвет = WinHttp.ResponseText(); Сообщить(лпОтвет) Возврат 1; Исключение Сообщить("Ошибка: "+ОписаниеОшибки(),"!"); Возврат 0; КонецПопытки; КонецФункции // ОтправитьЗапросПост
Цитата(nik389 @ 18.11.16, 16:12)
попробуйте curl, для ваших целей самое то..
Поделитесь пожалуйста опытом его использования, для меня как-то сложно...). Я видимо чего-то не понял из описаний Как можно с помощью курл реализовать - приведите пример, конкретно к задаче этой темы ?
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 0
nik389 @ Сегодня, 22:00
, Прикольно, спасибо.
Для такого обмена с помощью json в UTF-8, файлик скорее всего нужно будет писать без BOM.
В моем примере входной файл уже без BOM. Я сначала формирую файл с помощью FSO в 1251, а потом во время конвертации задаю ему параметр: oADOStream.Position=3; просто в примере этот момент упущен. ЗЫ: UTF-8 без BOM это кодировка CESU-8. О, так вернее
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)
Группа: Пользователи
Сообщений: 21
Спасибо сказали: 20 раз
Рейтинг: 0
whtblck @ 25.11.16, 15:53
, Проблема была связана с непониманием "физики процесса". Я в самом начале сказал "Мало что понимаю в API, и с ним связанном". И не говорил, что оно не работает Помогла вот эта ветка: [необходимо зарегистрироваться для просмотра ссылки]
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!