8.х WEB http сервисы

Тема в разделе ""1C:Web-Сервер"", создана пользователем TODD22, 30 июл 2015.

  1. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Нашёл вот такой пример:

    Код:
    &НаСервере
    Функция ВыполнитьPOSTЗапрос()
    
    Баланс = ТЗВзаиморасчеты();
     
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
    HTTPЗапрос = Новый HTTPЗапрос("main?func=setbillingstatus&auth_login=login&auth_pass=test", Заголовки);
    HTTPЗапрос.УстановитьТелоИзСтроки("xml=" + Баланс, "UTF-8");
    HTTPСоединение = Новый HTTPСоединение("95.181.95.555",9999,,,,,);//адрес фиктивный
    HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    Возврат HTTPОтвет.ПолучитьТелоКакСтроку();
    
    КонецФункции // ВыполнитьPOSTЗапрос()
    Но не работает.
    Пишет в возвращаемой строке: "не задан параметр func"
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    эта херь там не нужна. Все равно сервер ни на что не реагирует. Да и в любом случае лишняя она, у тебя нету формы.

    Тод и не будет работать.
    Тод ну пойми же, я не знаю как еще объяснить:
    не должно быть так что
    Не должен так параметр передаваться.
    ты понимаешь что файл xml по содержанию может в себе в свою очередь содержать знаки "=". Как, КАК вы например это парсить собрались?
    xml=<root><attrib a="123">10</attrib></root>
    Может быть просто
    HTTPЗапрос.УстановитьТелоИзСтроки(Баланс, "UTF-8");
    Но никак не "xml=" + Баланс.
    Это трындец какой-то.

    Ну во первых попробуй перед main / поставь. Т.е. "/main?func=setbillingstatus&auth_login=login&auth_pass=test".
    А во вторых - отличный повод позвонить ребятам и спросить, а что собственно они получают при таком запросе?
  3. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Как раз так он и должен передаваться. Это мне на другой стороне сказали. После того как я убрал "xml=".

    Тело и параметр xml передаются. Почему то не доходят параметры которые должны быть в заголовке.
    Пробовал ставить перед. Результат тот же....
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Гы. ну ладно, ладно. удачи ребятам, че.
    Я правда упорно не понимаю зачем там строка "xml=".


    Это вопрос к сервису куда делаешь запрос. Оно не может не передаваться.
    Они должны сказать - что приходит. И почему они не видят эти параметры.

    Тод, к коду из #81 у меня претензий вроде нет. Он должен быть рабочий. Сейчас вопрос к создателям сервиса - где параметры из строки запроса? Что они получают?
  5. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Видимо в POST может быть несколько параметров.
    Ничего не приходит. Пусто. Тело POST запроса есть. А параметры в строке подключения пустые.
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Вот так попробуй. Функции брал из нета, не проверял.

    Код:
    Функция hex(Знач Значение) 
    Значение=Число(Значение);
    Если Значение<=0 Тогда
    Результат="0";
    Иначе
    Значение=Цел(Значение);
    Результат="";
    Пока Значение>0 Цикл
    Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%16 + 1,1)+Результат;
    Значение=Цел(Значение/16) ;
    КонецЦикла;
    КонецЕсли;
    Если СтрДлина(Результат) < 2 Тогда
    
    Результат = "0" + Результат;
    
    КонецЕсли;
    Возврат "%" + Результат;
    КонецФункции
    
    Функция URLEncode(URL)
       // отсюда: http://www.w3.org/International/URLUTF8Encoder.java 
        
    Рез = "";
    
    Для Сч = 1 По СтрДлина(URL) Цикл
    
    ch = Сред(URL,Сч,1);
    vch = КодСимвола(ch);
    
    Если ("A" <= ch ) И ( ch <= "Z") Тогда // "A".."Z"
    Рез = Рез + ch;
    ИначеЕсли ("a" <= ch ) И ( ch <= "z") Тогда // "a".."z"
    Рез = Рез + ch;
    ИначеЕсли ("0" <= ch ) И ( ch <= "9") Тогда // "0".."9"
    Рез = Рез + ch;
    ИначеЕсли (ch = "") ИЛИ ( ch = "+") Тогда // space
    Рез = Рез + "+";
    ИначеЕсли (ch = "-" ) ИЛИ ( ch = "_") Тогда // unreserved
    // ch == '.' || ch == '!'
    // ch == '~' || ch == '*'
    // ch == '\'' || ch == '('
    // ch == ')') Тогда
    Рез = Рез + ch;
    ИначеЕсли (vch <= 127) Тогда // other ASCII
    Рез = Рез + hex(vch);
    ИначеЕсли (vch <= 2047) Тогда // non-ASCII <= 0x7FF
    Рез = Рез + hex(192 + Цел(vch / 64));
    Рез = Рез + hex(128 + (vch % 64));
    Иначе // 0x7FF < ch <= 0xFFFF
    Рез = Рез + hex(224 + Цел(vch / 4096));
    Рез = Рез + hex(128 + (Цел(vch / 64) % 64));
    Рез = Рез + hex(128 + (vch % 64));
    КонецЕсли;
    
    КонецЦикла;
    
    Возврат Рез;
    
    КонецФункции// ()
    
    
    &НаСервере
    Функция ВыполнитьPOSTЗапрос()
    
    Баланс = ТЗВзаиморасчеты();
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
    Логин = login;
    Пароль = test;
    HTTPЗапрос = Новый HTTPЗапрос("main", Заголовки);
    HTTPЗапрос.УстановитьТелоИзСтроки("func=setbillingstatus&auth_login=" + URLEncode(Логин) + "&auth_pass=" + URLEncode(Пароль) + "&xml=" + URLEncode(Баланс), "UTF-8");
    HTTPСоединение = Новый HTTPСоединение("95.181.95.555",9999,,,,,);//адрес фиктивный
    HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    Возврат HTTPОтвет.ПолучитьТелоКакСтроку();
    
    КонецФункции // ВыполнитьPOSTЗапрос()
  7. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Блииин. Можете объяснить, почему нельзя воспользоваться штатными средствами 1С для подключения к вебсервисам ??? Я так понимаю что на другой стороне не поднят сам веб-сервис, ибо из строки запроса это уже понятно:). А организована простая обрбаботка запросов. Вот отсюда и весь гемор.
  8. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Потому что есть web сервисы, а есть http сервисы. Это разные технологии.
    С web сервисами я работал. Вот теперь и http осваиваю....
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Так web намного круче http :), и намного безопаснее. А то начнут вас дидосить не дай бог :)
  10. TopicStarter Overlay
    TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Сервис будет внутренний. Это что бы связать 1Ску и сервер специализированный. Там никто дидосить не будет.
    Но у нас есть и внешний сервис. То же никто не дидосит. Нормально всё....

    Ну и ничего крутого в web нет. И в web вроде как на каждое подключение нужен ключ пользовательский на http вроде нет. Хотя может и перепутал.
  11. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Преимущество web перед post - это работа сразу с функциями/процедурами на сервисе. Т.е. подключаетесь на какой-то сервис, в ответ он вам выдает разрешенные процедуры и функции. Вот с ними уже и работаете. Ну да ладно, хозяин - барин :), как вам будет угодно, учить не хочу :), тем более ваших кодеров :)
  12. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Доброго всем,
    можно было развернуть "демо" базу, ту которая предлагается для скачивания в секции "обновления программ", в ней есть примеры работы и с "HTTP-сервисами" и с "Web-сервисами"
    можно драть от туда целиком :)
Похожие темы
  1. Irys
    Ответов:
    8
    Просмотров:
    5.150
  2. Науменко
    Ответов:
    1
    Просмотров:
    863
  3. Bonderos
    Ответов:
    2
    Просмотров:
    2.268
  4. Hatycik
    Ответов:
    33
    Просмотров:
    2.621
Загрузка...

Поделиться этой страницей