Параметр в кодировке win-1251(HttpСоединение)
Приамбула:
В сети достаточно много полезных (и не очень) сервисов которые работают через прямые http запросы. В 1С тоже есть инструментарий для подобной работы- это объект HttpСоединение и распространенные методы Post, Get, Put.
Жизненные нюансы:
Платформа 1С Предприятие по умолчанию работает в кодировке Unicode, т.е. все данные хранятся и передаются в этой кодировке. Большинство сервисов поддерживает кодировку win-1251 и unicode неподдерживает. И если в http запросе необходимо передать кирилицу, то соответственно сервис этого "непрожует"
Вопрос:
Каким способом (есть ли он?) можно передать в качестве параметра метода объекта строку в кодировке win-1251?
Пример:
В данном примере сервис в параметре <SendData> получит не <ВасяВасечкин> т.к. строка в unicode кодировке
В сети достаточно много полезных (и не очень) сервисов которые работают через прямые http запросы. В 1С тоже есть инструментарий для подобной работы- это объект HttpСоединение и распространенные методы Post, Get, Put.
Жизненные нюансы:
Платформа 1С Предприятие по умолчанию работает в кодировке Unicode, т.е. все данные хранятся и передаются в этой кодировке. Большинство сервисов поддерживает кодировку win-1251 и unicode неподдерживает. И если в http запросе необходимо передать кирилицу, то соответственно сервис этого "непрожует"
Вопрос:
Каким способом (есть ли он?) можно передать в качестве параметра метода объекта строку в кодировке win-1251?
Пример:
ТекстЗапроса = ""+АдресВебСервиса+""http_username=MyLogin&http_password=MyPassword&SendData=ВасяВасечкин";
Соединение = Новый HTTPСоединение(АдресСервераУслуг);
Соединение.Получить(ТекстЗапроса,ПутьКФайлуРезультата)
В данном примере сервис в параметре <SendData> получит не <ВасяВасечкин> т.к. строка в unicode кодировке
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
WinHttp=СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
WinHttp.Option(2,"Windows-1251");
WinHttp.Open("POST","https://infostart.ru",0);
// Вторым параметром передаем GET-данные
//param1=value1¶m2=value2"
//WinHttp.SetProxy(0,"192.168.1.1:3128");// Задаем параметры своего прокси сервера
//WinHttp.SetCredentials("ProxyLogin","ProzyPassword",1);
// Задаем параметром логин и пароль
//если прямое соединение то так в коментах и оставлем :)
WinHttp.SetRequestHeader("Accept-Language", "ru");
WinHttp.SetRequestHeader("Accept-Charset","Windows-1251");
WinHttp.setRequestHeader("Content-Language", "ru");
WinHttp.setRequestHeader("Content-Charset", "Windows-1251");
WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=Windows-1251");
ПараметрыПОСТ = "isJuridical=1" + "&individualCode="+СокрЛП(Контрагент);
WinHttp.Send(ПараметрыПОСТ);// Параметром передаем POST-данные для страници тут как раз
Дальше или сохраняем страницу в файл
Текст = СоздатьОбъект("Текст");
Текст.ДобавитьСтроку(WinHttp.ResponseText());
Текст.Записать(КаталогИБ() + "otvet.htm");
WinHttp.Option(2,"Windows-1251");
WinHttp.Open("POST","https://infostart.ru",0);
// Вторым параметром передаем GET-данные
//param1=value1¶m2=value2"
//WinHttp.SetProxy(0,"192.168.1.1:3128");// Задаем параметры своего прокси сервера
//WinHttp.SetCredentials("ProxyLogin","ProzyPassword",1);
// Задаем параметром логин и пароль
//если прямое соединение то так в коментах и оставлем :)
WinHttp.SetRequestHeader("Accept-Language", "ru");
WinHttp.SetRequestHeader("Accept-Charset","Windows-1251");
WinHttp.setRequestHeader("Content-Language", "ru");
WinHttp.setRequestHeader("Content-Charset", "Windows-1251");
WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=Windows-1251");
ПараметрыПОСТ = "isJuridical=1" + "&individualCode="+СокрЛП(Контрагент);
WinHttp.Send(ПараметрыПОСТ);// Параметром передаем POST-данные для страници тут как раз
Дальше или сохраняем страницу в файл
Текст = СоздатьОбъект("Текст");
Текст.ДобавитьСтроку(WinHttp.ResponseText());
Текст.Записать(КаталогИБ() + "otvet.htm");
Стр =Контр.Наименование;
Стрим = Новый COMОбъект("Adodb.Stream");
Стрим.Type = 2;
Стрим.Mode= 3;
Стрим.charset="utf-8";
Стрим.Open();
Стрим.WriteText(Стр);
Стрим.Position=0;
Стрим.charset="windows-1251";
Рез=Стрим.ReadText(-1);
Стрим.Close();
Возврат Рез;
Решение не моё, нашел на каком-то форуме, но работает без проблем
Стрим = Новый COMОбъект("Adodb.Stream");
Стрим.Type = 2;
Стрим.Mode= 3;
Стрим.charset="utf-8";
Стрим.Open();
Стрим.WriteText(Стр);
Стрим.Position=0;
Стрим.charset="windows-1251";
Рез=Стрим.ReadText(-1);
Стрим.Close();
Возврат Рез;
Решение не моё, нашел на каком-то форуме, но работает без проблем
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)