8.х HttpЗапрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем 1chelp, 27 июл 2017.

  1. TopicStarter Overlay
    1chelp
    Offline

    1chelp

    Регистрация:
    29 янв 2016
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте, делаю GET запрос, один из параметров запроса содержит http ссылку закодированую
    КодироватьСтроку(СформироватьКолБэкСсылку(ИдентификаторСообщения),СпособКодированияСтроки.КодировкаURL), на сервере получаю ссылку через $_SERVER['QUERY_STRING'], в результате закодированные символы кодируются еще раз, может кто-то сталкивался? как предотвратить двойное кодированние?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.685
    Симпатии:
    1.011
    Баллы:
    204
    не кодировать первый раз, не?
  3. TopicStarter Overlay
    1chelp
    Offline

    1chelp

    Регистрация:
    29 янв 2016
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    Если не кодировать первый раз то ссылка останется нетронутой, то-есть в $_SERVER["QUERY_STRING"] будет вообще не закодирована
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.685
    Симпатии:
    1.011
    Баллы:
    204
    в таком случае, разбираться с техподдержкой ресурса, который зачем-то кодирует запрос еще раз.
    1С тут вообще никаким боком.
  5. TopicStarter Overlay
    1chelp
    Offline

    1chelp

    Регистрация:
    29 янв 2016
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    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 Тогда   
                    РегистрыСведений.КР_ДанныеСМССообщений.УстановитьДанныеСМССообщения(ТекущаяДата(),СтрокаТаблицы.Получатель,ИдентификаторСообщения,СтрокаТаблицы.НомерПолучателя,СтрокаТаблицы.ТекстСообщения,СМСШлюз.Агрегатор);
                Иначе
                    ЗаписьЖурналаРегистрации("Попытка отправить СМС",УровеньЖурналаРегистрации.Ошибка,Метаданные.Справочники.КР_СМСШлюзы,Ответ.ПолучитьТелоКакСтроку());
                    КР_ОповещениеПользователей.ОповеститьОбОшибках(Ответ.ПолучитьТелоКакСтроку());
                КонецЕсли;               
            КонецЦикла;
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.685
    Симпатии:
    1.011
    Баллы:
    204
    Т.е. кривой ответ в ыа?
  7. TopicStarter Overlay
    1chelp
    Offline

    1chelp

    Регистрация:
    29 янв 2016
    Сообщения:
    41
    Симпатии:
    0
    Баллы:
    1
    да, закодированная строка :// должна выгледеть %3A%2F%2F а ответ %253A%252F%252F, закодирована 2 раза
Похожие темы
  1. MyNameNoName
    Ответов:
    2
    Просмотров:
    845
Загрузка...