Отправка HTTP-строки с обработкой ответа

Отправка HTTP-строки с обработкой ответа для реализации вызова PHP-скрипта, к которому обращался HTTP-ссылкой.
Вызов InternetExplorer.Aplications не прельщало. По этому использовался метод GetCOMObject("", "Microsoft.XMLHTTP") с обработкой ответа.

Для реализации одного из проектов необходимо было вызывать PHP-скрипт, к которому обращался HTTP-ссылкой.
Вызов InternetExplorer.Aplications не прельщало. По этому использовался метод GetCOMObject(«», «Microsoft.XMLHTTP») с обработкой ответа.

В обработке есть так же пример как парсить XML ответ.

Лично мной использовалось в:
— общение с ГеоКодером и Картами(Гугл, Яндекс)
— обмен с сайтом (команда выгрузки/загрузки)

Интерфейса как такового нет… Рисунков нет — т.к. нечего показывать, кроме кода =)

Коменты присутствуют, но все же отладка вам в помощь.

Юзать можно на любой конфигурации. Ограничение в платформе (8.2), хотя код будет работать и на 8.1.

15 Comments

  1. Angeros

    А вот «- общение с ГеоКодером и Картами(Гугл, Яндекс)» Это уже интересно. Поделитесь обработкой и ALL?!

    Reply
  2. МимохожийОднако

    Любопытная штучка. Однажды нужна была такая задачка. Надо посмотреть.

    Reply
  3. Alexander.Shvets

    (1) Angeros,

    Допилю, сдам проект, получу за него денюжку и только тогда расшарю. До этого момента — сам понимаешь, не имею права 😉

    Но если интересует что-то конкретное — пиши, советом помогу 😉

    Reply
  4. Magister

    А в чем глубокий смысл использования COM-объекта?

    В платформе есть родные методы для работы с HTTP/HTTPS, которые отлично работают в большинстве ситуаций.

    Разве что если нужно отправлять большие файлы — десятки мегабайт — тогда у меня работало нестабильно. А небольшие — уже больше 2-х лет в продакшене, запросы каждые несколько минут. Никаких проблем.

    Reply
  5. markers

    (4) Magister, Согласен, получай XML и параси его средствами 1С.

    Reply
  6. Alexander.Shvets

    (4) Magister,

    Вы сами и ответили на свой вопрос. В стабильности и универсальности.

    Надо что-то просто отправить (дать пинок скрипту) — без проблем…

    Необходимо в ответе получить объект — получаем бинарный код, который засовываемым в XML.

    без ПОСТ и ФТП.

    Как по мне — так почти на все случаи жизни… Тем более работает быстро.

    (5) markers,

    Если нужно одновременно общаться с несколькими ресурсами (отправить, получить результат, потом полученный результат отправить дальше и т.д.) — предложенный метод поможет избежать «считалок» и «держалок» в коде.

    получай XML и параси его средствами 1С,

    собственно это, можно сказать, я и делаю 😉

    Reply
  7. Magister

    (6) Причем тут FTP? Платформенный метод глючил у меня только при попытке отправить файл размером около 70 Мб. Больше с ним проблем абсолютно никаких не наблюдалось.

    А про «считалки» и «держалки» не понял.

    Reply
  8. ander_

    (4) Magister,

    Поправьте, если я ошибаюсь, но «родными» 1с-ными методами нельзя получить ответ в виде строки. Только файл.

    Reply
  9. Alexander.Shvets

    (7) Magister,

    А про «считалки» и «держалки» не понял.

    Если интересуют основы XMLHTTP — почитайте тут. (внешний источник)

    «считалки» и «держалки» — это аналог асинхронного запроса в 1С, мы возвращаем управление 1С-ой когда получаем обратный ответ.

    Reply
  10. Magister

    (8) Да, только в файл. Но я в этом не вижу проблемы — файл можно прочитать и удалить 🙂

    (9) Спасибо, что это такое я знаю. А вот про асинхронность — т.е. вы хотите сказать, что используете XMLHTTP из 1С асинхронно? Как тогда ловите событие? Я способов, кроме использование ВК, не вижу.

    Reply
  11. ander_

    (10) Magister, хорошо если сервер отвечает файлом. А если строкой? Во всяком случае у меня не получилось HTTPСоединение заставить работать в таком режиме. Хотя не исключаю что возможно я что-то не так делал.

    Reply
  12. Alexander.Shvets

    (10) Magister,

    Так же использовал внешние. Досконально вопрос не изучал, но что то подсказывает, что реализовать можно и без компонент.

    Но это, как мне нажиться — немного офтоп. Но все же спасибо за дискутивную тезу =)) Есть над чем поразмыслить.

    Если припадет нужда асинхронно юзать XMLHTTP еще раз — попытаюсь реализовать в одном объекте. Если результат будет позитивный — обязательно поделюсь.

    Reply
  13. Magister

    (11) У меня отвечает именно строкой. И всё отлично работает. Наверное, вы таки что-то не так делали.

    (12) Асинхронность — это да, только средствами 1С реализовать проблематично. Но, справедливости ради, ни разу не встречал задачи, в которой она была бы нужна. Что впрочем не означает абсолютной ненужности 🙂

    И да, если уж использовать ВК — я бы взял что-то своё, например, использующее libcurl. И реализовал на NativeAPI. Чтобы и на сервере под Linux всё тоже работало.

    Reply
  14. dima1c

    Плюсанул, сам так делал…

    Reply
  15. fixin

    у этого COM-объекта, который заюзал автор, есть одно хорошее преимущество — можно назначить тайм-аут.

    я сначала пробовал 1с-овский HTTPRequest, но из-за отсутствия тайм-аута порой тупо повисала 1с.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *