Процедура Сформировать()
ИмяФайлаBody = "d:\Temp\test.json";
ТочкаВхода="https://api.ifurni.net/api/";
oADOStream = СоздатьОбъект("ADODB.Stream");
oADOStream.Type = 1; //Binary
oADOStream.Open();
oADOStream.LoadFromFile(ИмяФайлаBody);
WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
//Отключаем проверку сертификата
Скрипт= СоздатьОбъект("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", "text/json");
WinHttp.setRequestHeader("Content-type", "text/json");
WinHttp.SetRequestHeader("Content-length", "" + oADOStream.Size);
WinHttp.SetRequestHeader("key", "MasterKey");
WinHttp.SetRequestHeader("action", "get_worker_list");
Попытка
WinHttp.Send(oADOStream);
СтрокаОтветаНаЗапрос = WinHttp.ResponseText();
тк=СоздатьОбъект("Текст");
тк.ДобавитьСтроку(СтрокаОтветаНаЗапрос);
тк.Записать("D:\temp\test_return.json");
Статус = СокрЛП(WinHttp.Status);
Описание = СокрЛП(WinHttp.StatusText);
Сообщить(СтрокаОтветаНаЗапрос);
Исключение
Сообщить("Ошибка: "+ОписаниеОшибки(),"!");
КонецПопытки;
КонецПроцедуры
Тело запроса грузится из переменной - ИмяФайлаBody. Ответ получаем в строке Сообщения (если ответ не будет слишком велик и не выдаст ошибку, это не проблема) ну и записывваем в файл test_return.json.
Все полностью отрабатывается и получаем ответ:
{"status":"ok","error":"","data":{"client_1":{"phone":"+38 (097) 875-26-44","name":"???»N?N???N? 1","ifp_id":"125","code":null}}}
И Вот сам вопрос ... как мне получить Кирилические символы в нормальном виде. (в данном примере вот они - "name":"???»N?N???N? 1")
Пробовал добавлять в заголовки:
WinHttp.SetRequestHeader("Accept-Language", "ru");
WinHttp.SetRequestHeader("Accept-Charset", "utf-8");
WinHttp.SetRequestHeader("Content-Language", "ru");
WinHttp.SetRequestHeader("Content-Charset", "utf-8");
Также перед отправкой метода POST:
WinHttp.Option(2,"utf-8");
Результат один и тот же.
Ещё хотел поинтересоватся, кто уже работал с API. Есть какие то готовые парсеры для строки или каждый API по разному разбирается, нет каких то статичных якорей и т.д. В общем посоветуйте как лучше разбирать
Спасибо.