Здравствуйте, делаю GET запрос, один из параметров запроса содержит http ссылку закодированую КодироватьСтроку(СформироватьКолБэкСсылку(ИдентификаторСообщения),СпособКодированияСтроки.КодировкаURL), на сервере получаю ссылку через $_SERVER['QUERY_STRING'], в результате закодированные символы кодируются еще раз, может кто-то сталкивался? как предотвратить двойное кодированние?
Если не кодировать первый раз то ссылка останется нетронутой, то-есть в $_SERVER["QUERY_STRING"] будет вообще не закодирована
в таком случае, разбираться с техподдержкой ресурса, который зачем-то кодирует запрос еще раз. 1С тут вообще никаким боком.
а они говорят что проблема в 1с...попробовал сделать запрос через пхп при помоши curl, работает без проблем... пока не знаю что думать...запрос в 1с примерно так делаю Код: ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(); Соединение = Новый HTTPСоединение(СМСШлюз.АдресСервера, СМСШлюз.ПортHTTP,,,,,ЗащищенноеСоединение); Запрос = ПолучитьМакет("ЗапросBemobile").ПолучитьТекст(); Запрос = СтрЗаменить(Запрос, "[ИдентификаторПриложения]", КодироватьСтроку(СМСШлюз.ИдентификаторПриложения,СпособКодированияСтроки.КодировкаURL)); Запрос = СтрЗаменить(Запрос, "[ЛогинHTTP]", СМСШлюз.ЛогинHTTP); Запрос = СтрЗаменить(Запрос, "[ПарольHTTP]", СМСШлюз.ПарольHTTP); Запрос = СтрЗаменить(Запрос, "[ВремяЖизниСообщения]", КодироватьСтроку(720, СпособКодированияСтроки.КодировкаURL)); Запрос = СтрЗаменить(Запрос, "[ТипОтчетаОДоставке]", КодироватьСтроку(31, СпособКодированияСтроки.КодировкаURL)); Для Каждого СтрокаТаблицы Из Данные Цикл ИдентификаторСообщения = Строка(Новый УникальныйИдентификатор()); ТекущийЗапрос = Запрос; ТекущийЗапрос = СтрЗаменить(ТекущийЗапрос, "[ИдентификаторСообщения]", КодироватьСтроку(ИдентификаторСообщения, СпособКодированияСтроки.КодировкаURL)); ТекущийЗапрос = СтрЗаменить(ТекущийЗапрос, "[НомерПолучателя]", КодироватьСтроку(СтрокаТаблицы.НомерПолучателя, СпособКодированияСтроки.КодировкаURL)); ТекущийЗапрос = СтрЗаменить(ТекущийЗапрос, "[ТекстСообщения]", СтрокаТаблицы.ТекстСообщения); ТекущийЗапрос = СтрЗаменить(ТекущийЗапрос, "[КолБэк]", КодироватьСтроку(СформироватьКолБэкСсылку(ИдентификаторСообщения),СпособКодированияСтроки.КодировкаURL,"Windows-1251")); ЗаголовокHTTP = Новый Соответствие(); //ЗаголовокHTTP.Вставить("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); //ЗаголовокHTTP.Вставить("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"); ЗаголовокHTTP.Вставить("Content-Type:", "text/plain; charset=utf-8"); HttpЗапрос = Новый HttpЗапрос(ТекущийЗапрос,ЗаголовокHTTP); Ответ = Соединение.Получить(HttpЗапрос); ыа = Ответ.ПолучитьТелоКакСтроку(); Если Ответ.КодСостояния = 202 Тогда РегистрыСведений.КР_ДанныеСМССообщений.УстановитьДанныеСМССообщения(ТекущаяДата(),СтрокаТаблицы.Получатель,ИдентификаторСообщения,СтрокаТаблицы.НомерПолучателя,СтрокаТаблицы.ТекстСообщения,СМСШлюз.Агрегатор); Иначе ЗаписьЖурналаРегистрации("Попытка отправить СМС",УровеньЖурналаРегистрации.Ошибка,Метаданные.Справочники.КР_СМСШлюзы,Ответ.ПолучитьТелоКакСтроку()); КР_ОповещениеПользователей.ОповеститьОбОшибках(Ответ.ПолучитьТелоКакСтроку()); КонецЕсли; КонецЦикла;
да, закодированная строка :// должна выгледеть %3A%2F%2F а ответ %253A%252F%252F, закодирована 2 раза