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

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

  1. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Необходимо отправить xml на сервер http запросом.

    Нашёл пример кода. Пытаюсь переписать под себя:
    Например:
    Код:
        Адрес = "96.182.25.555";
        Порт = 2222;
        Пользователь = "login";
        Пароль = "test";
      
        Соединение = Новый HTTPСоединение(Адрес,Порт,Пользователь,Пароль,,,);
        ЗаголовокHTTP = Новый Соответствие();
        ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
    
    Но вот дальше что то не понимаю...
    Код:
    Запрос = Новый HTTPЗапрос("/tracker/XML/",ЗаголовокHTTP);
        Запрос.УстановитьТелоИзСтроки("&rwID=" + СокрЛП(НомерНакладной));
        Ответ = Соединение.ОтправитьДляОбработки(Запрос);
        ОтветВВидеСтроки = Ответ.ПолучитьТелоКакСтроку("UTF-8"); 
    Какой первый параметр мне нужно указать в httpзапрос ?
    И ещё не понятно что писать вместо "&rwID="

    Строка у меня вот такая:
    _ttp://96.182.25.555:2222/main?func=setbillingstatus&auth_login=login&auth_pass=test
  2. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Сделал так:
    Запрос = Новый HTTPЗапрос("",ЗаголовокHTTP);
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    ОтветВВидеСтроки = Ответ.ПолучитьТелоКакСтроку("UTF-8");

    Смотрю переменную "Ответ" в ней КодСостояния 200.
    А в переменной "ОтветВВидеСтроки" у меня "HTTP-Provider v1.0"

    Я так понимаю что я законектился?
  3. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    Я использую такой код:

    Код:
    Функция ПолучитьСоединениеССервером() Экспорт
      
        Перем SSL;
      
        Если Сервер_Требует_SSL Тогда  
            SSL = Новый ЗащищенноеСоединениеOpenSSL();
        КонецЕсли;
      
        Возврат Новый HTTPСоединение("DnsИмяИлиIPСервера", , , , , , SSL);
      
    КонецФункции
    
    Процедура ПередачаДанныхНаHTTPСервис()
       
        HTTP = ПолучитьСоединениеССервером();
      
        ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();
        ИмяФайлаЗапроса    = ПолучитьИмяВременногоФайла();
      
        СтрокаЗапроса =
        "&method=getInfo";
        
        Заголовки = Новый Соответствие;
        Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
            
        ТекПоток = Новый ЗаписьТекста(ИмяФайлаЗапроса, КодировкаТекста.ANSI);
        ТекПоток.Записать(СтрокаЗапроса);
        ТекПоток.Закрыть();
      
        Попытка
            HTTP.ОтправитьДляОбработки(ИмяФайлаЗапроса, "АдресРесурсаОтносительноКорняСервера", ИмяФайлаОтвета, Заголовки);  
        Исключение
            ЗаписьЖурналаРегистрации("Загрузка данных аккаунта", УровеньЖурналаРегистрации.Ошибка, , ,"Ошибка: " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
            Возврат;
        КонецПопытки;
      
        ТекПоток = Новый ЧтениеТекста(ИмяФайлаОтвета);
         ОтветСервера = ТекПоток.Прочитать();
        ТекПоток.Закрыть();
        УдалитьФайлы(ИмяФайлаЗапроса);
        УдалитьФайлы(ИмяФайлаОтвета);
    КонецПроцедуры
    
    В твоем случае "АдресРесурсаОтносительноКорняСервера" будет = "main",
    а
    СтрокаЗапроса = "func=setbillingstatus&auth_login=login&auth_pass=test";

    В самом HTTPсоединении логин и пасс не нужно использовать.

    Про "/tracker/XML/" не совсем понял - это точно нужно или это какой-то пример?
    Если нужно, то запрос тогда будет не к

    _ttp://96.182.25.555:2222/main

    а к

    _ttp://96.182.25.555:2222/tracker/XML/main
    "АдресРесурсаОтносительноКорняСервера" = "tracker/XML/main"
    или

    _ttp://96.182.25.555:2222/main/tracker/XML
    "АдресРесурсаОтносительноКорняСервера" = "main/tracker/XML"

    Отладить можно используя Crome(в других, наверное, тоже можно, но я не знаю как):
    Открыть _ttp://96.182.25.555:2222/main в браузере и нажать F12. Перейти на закладку Network и обновить страницу - много интересного увидишь :)
    Последнее редактирование: 30 июл 2015
  4. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    не понимаю как мне теперь в него xml вставить.... :(
    Потом конечно перепишу и с Попытка/Исключение и тд
    сейчас бы хотелось впихнуть в него xml и отправить. Что бы на другой стороне посмотрели что всё приходит и начали работать над структурой получаемого ответа.

    Вот цитата из документации по API.
    --- Объединение сообщений, 30 июл 2015 ---
    Я так понимаю мне нужно вторую строку отредактировать.
    Но вот как не догоняю....
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    Строка запроса у тебя будет меняться:

    СтрокаЗапроса =
    "&rwID=" +СокрЛП(НомерНакладной);

    какой параметр отвечает за саму строку XML?
  6. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Это из примера
    --- Объединение сообщений, 30 июл 2015 ---
    Вот тут не очень понял. А как я тогда передам логин и пароль?
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    В виде параметров, если результирующая строка запроса должна выглядеть
    _ttp://96.182.25.555:2222/main?func=setbillingstatus&auth_login=login&auth_pass=test

    Ты скажи лучше, какой параметр за строку XML отвечает, в него передавать надо

    ну что-то вроде:

    &XMLString="XMLString".

    Или может быть так, что после первого запроса авторизации необходимо формировать другой запрос на другой адрес(с использованием данных из ответа первого запроса), где тело запроса будет содержать строку XML.

    Пример из документации - детский лепет, в нем просто передается номер документа в определенный параметр, каким образом передать сам документ в виде XML вообще не понятно.
    Последнее редактирование: 30 июл 2015
  8. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Параметр xml называется.
    Нифига не понимаю..... с этими сервисами.
    --- Объединение сообщений, 30 июл 2015 ---
    А как параметрами задать логин, пароль и тд?
    Есть пример кода?
  9. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    Ну я ж написал:

    СтрокаЗапроса = "func=setbillingstatus&auth_login=login&auth_pass=test";

    login и test - это значения логина и пасса соответственно.

    Параметры - это все что выглядит как "&ИмяПараметра=ЗначениеПараметра"
  10. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    логин/пароль в открытом виде в строке get запроса передаются? Хорошее дело.. :)
  11. TopicStarter Overlay
    TODD22
    Online

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

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

    Но будут и запросы из вне. На другие сервисы. А как скрыть логины и пароли?
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    запрос логина и пароля должен быть для HTTP соединения, т.е.
    Новый HTTPСоединение(Адрес,Порт,Пользователь,Пароль,,,);

    ну и + всякие там хэши сессий через куки и прочие способы защиты....
  13. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ну я хз в сетевой безопасности. Но передача логина в строке - по-моему это не очень. TODD22 в таком виде - это все равно что ты видишь логин/пароль в адресной строке браузера. Т.е. представь, что ты заходишь в свой почтовый ящик, ну допустим на mail.ru, и читаешь в адресной строке прям открытым текстом: _ttps://e.mail.ru/?auth_login=TODD22@mail.ru&auth_pass=ТвойПароль.

    nomad_irk уже написал выше. Нужна аутентификация для http соединения (HTTP Basic она называется или хз как там).
  14. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Вадим попробовал твою процедуру переписать.

    Вот такую ошибку получил в журнал регистрации: Ошибка работы с Интернет: Couldn't resolve host name
    --- Объединение сообщений, 30 июл 2015 ---
    Так с ошибкой разобрался... адрес надо без http/ задавать.

    Получил ответ в виде каких кракозябр..... видимо что то с кодировкой.
    --- Объединение сообщений, 30 июл 2015 ---
    А между main и func стоит знак ?.
    То есть main?func он где должен быть? в адресе или в телезапроса?
    Или он там не нужен? В смысле 1Ска его подставит.
    Последнее редактирование: 30 июл 2015
  15. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Ну вроде на том конце от меня получили xml.
    Вадим спасибо!!!!
  16. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    Так рано я обрадовался :( Не работает. Это я через браузер тестил когда строку... она пришла....
    --- Объединение сообщений, 30 июл 2015 ---
    Вопрос в "То есть main?func он где должен быть? в адресе или в теле запроса?"
    То есть вот этот знак вопроса его куда нужно... в начало строки или в конец адреса?
  17. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    Никуда его не нужно специально вставлять.
    Финальная строка запроса как должна выглядеть?
  18. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    TODD22 main у тебя адрес ресурса.
    После адреса ресурса ставится знак ?
    И потом идут параметры запроса в виде параметр=значение
    они разделяются амперсандом &
  19. TopicStarter Overlay
    TODD22
    Online

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

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    ttp://96.182.25.555:2222/main?func=setbillingstatus&auth_login=login&auth_pass=test&xml=(тут хмл файл добавляю).

    На другой стороне смотрят говорят приходит огрызок от xml.
    --- Объединение сообщений, 30 июл 2015 ---
    ХМЛВзаиморасчеты = ПолучитьХМЛ();
    СтрокаЗапроса = "func=setbillingstatus&auth_login=login&auth_pass=test&xml="+ХМЛВзаиморасчеты;

    Но до адресата доходит: <?xml version
  20. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.573
    Симпатии:
    717
    Баллы:
    204
    ИМХО:
    потому что передаваемая строка запроса содержит в себе кавычки, их нужно либо задваивать все, либо в комбинации символов превращать, как "пробел" в %20 превращают, например.
Похожие темы
  1. Irys
    Ответов:
    8
    Просмотров:
    5.154
  2. Науменко
    Ответов:
    1
    Просмотров:
    865
  3. Bonderos
    Ответов:
    2
    Просмотров:
    2.273
  4. Hatycik
    Ответов:
    33
    Просмотров:
    2.636
Загрузка...

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