Простой пример HTTP-запроса: поиск в Яндекс/Google

28.12.15

Интеграция - WEB-интеграция

Пример взаимодействия со сторонними REST сервисами из 1С:Предприятия 8.3

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Поиск в интернете.epf
.epf 8,70Kb
24
24 Скачать (1 SM) Купить за 1 850 руб.

Задача:

Возникла задача поиска фраз в интернете. Решил поделиться результатами=)

Статей на тему HTTP-запросов достаточно, но ничего не нашел насчет работы с поисковыми системами.

Предыстория:

Подробнее об использовании GET и POST-запросов можно узнать ниже.

О протоколе HTTP можно узнать тут: https://ru.wikipedia.org/wiki/HTTP

Описание REST интерфейса в прикладных решениях: http://v8.1c.ru/o7/201312rest/index.htm

HTTP-сервисы в прикладных решениях: http://v8.1c.ru/o7/201312http/index.htm

Собственно сам код GET-запроса:

	Если ТочноеСоответствие Тогда
		ТочныйПоиск = "&wordforms=exact";
	КонецЕсли;
	
	Если ГдеИскать = "Yandex" Тогда
		стрURL  = "http://yandex.ru/search/?text=" + СокрЛП(ТекстПоиска) + "&lr=2" + ТочныйПоиск;
	Иначе
		Если ТочноеСоответствие Тогда
			стрURL  = "http://www.google.ru/#q=" + СокрЛП(ТекстПоиска) + "&newwindow=1&tbs=li:1";
		Иначе
			стрURL  = "http://www.google.ru/#q=" + СокрЛП(ТекстПоиска) + "&newwindow=1&tbas=0";
		КонецЕсли;
	КонецЕсли;
	
	//вычислить адрес сервера из адресной сторки
	//пример АдресСервера: "yandex.ru" 
	АдресСервера1 = СтрЗаменить(стрURL, "http://" ,"");  
	ИндексСлеша   = Найти(АдресСервера1, "/");
	АдресСервера  = Сред(АдресСервера1, 0 ,индексСлеша - 1);

        //вычислить строку URL
	//пример URL: "/search/?text=1C&lr=2&wordforms=exact"" 
	ДлинаСтроки = СтрДлина(АдресСервера1);
	URL = "/" + Прав(АдресСервера1, ДлинаСтроки - ИндексСлеша);

	//установим заголовки соединения
	//каждая страница требует индивидуального подхода 
	ЗаголовокGET = Новый Соответствие();
	ЗаголовокGET.Вставить("GET " + URL + " HTTP/1.1");
	//ЗаголовокGET.Вставить("Accept"                   , "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
	//ЗаголовокGET.Вставить("Accept-Encoding"          , "gzip, deflate, sdch");
	//ЗаголовокGET.Вставить("Accept-Language"          , "ru,en;q=0.8");

	Попытка
		
		//ВременныйФайл = ПолучитьИмяВременногоФайла("html");
					
		ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
            Новый СертификатыУдостоверяющихЦентровWindows());
		
	    HTTPСоединение = Новый HTTPСоединение(АдресСервера,,,,,,ssl1);

	    HTTPЗапрос     = Новый HTTPЗапрос(URL, ЗаголовокGET);

		//HTTPОтвет      = HTTPСоединение.Получить(HTTPЗапрос, ВременныйФайл);
	    HTTPОтвет      = HTTPСоединение.Получить(HTTPЗапрос);

	    КодСостояния   = HTTPОтвет.КодСостояния;

		ТекстОтвета    = HTTPОтвет.ПолучитьТелоКакСтроку();
		
	Исключение
	    Сообщить("Не удалось установить соединение с сервером :" 
	        + Символы.ПС + ИнформацияОбОшибке().Описание);
	    Возврат;
	КонецПопытки;	//
	
	Если КодСостояния=200 Тогда
		Если Найти(ТекстОтвета, "По вашему запросу ничего не нашлось")>0 
			ИЛИ Найти(ТекстОтвета, "ничего не найдено.")>0 Тогда
			Сообщить("По вашему запросу ничего не нашлось.");
		Иначе
			Сообщить("Поиск дал результаты.");
		КонецЕсли;
	Иначе
	    Сообщить("Не удалось выполнить поисковый запрос.");
	КонецЕсли;


 

Прикладываю обработку.

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    4491    5    0    

11

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    35883    71    45    

30

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    3332    3    3    

5

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    1405    9    2    

11

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    19708    24    24    

21

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    5581    5    2    

6

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 1C:Бухгалтерия Управленческий учет Платные (руб)

Решение осуществляет синхронизацию задач Битрикс24 и 1С, что позволяет в одной системе ставить задачи, контролировать выполнение всего пула задач с группировкой по ответственным и проектам, формировать управленческие отчеты по работе сотрудников (загрузка, просроченные задачи), уведомлять сотрудников о ходе выполнения задач посредством чат-бот Telegram

7200 руб.

04.05.2021    21327    14    19    

19
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. premierex 207 29.12.15 13:49 Сейчас в теме
(0) Я так полагаю, что следовало бы указать платформу 1С:Предприятие.
На платформе 8.2 следующий код просто вызовет ошибку:

ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
Новый СертификатыУдостоверяющихЦентровWindows());
2. dimzfresh 79 29.12.15 14:03 Сейчас в теме
(1) premier, исправлю. По скриншотам видно, что интерфейс "Такси":)
3. TMV 11 29.12.15 15:13 Сейчас в теме
(0) все, что указано в заголовках соединения, не нужно, кроме первого.
4. BorovikSV 1038 29.12.15 16:15 Сейчас в теме
(0) Клюнул на "Пример использования REST интерфейса 1С:Предприятия", оказался обычный GET запрос.
Зачем же вводить в заблуждение? (от меня минус именно за это)

5. dimzfresh 79 30.12.15 00:17 Сейчас в теме
(4) BorovikSV, не было цели вводить в заблуждение. Исправил.
6. Программулькин 301 30.12.15 09:41 Сейчас в теме
как то не закончено, может результат как то вывести?
7. dimzfresh 79 30.12.15 11:13 Сейчас в теме
(6) Программулькин, пример не является законченным решением=)
8. Arxxximed 37 30.12.15 13:00 Сейчас в теме
(0)
Ой , убрали самое интересное, хорошо что со вчера не обновлял страницу
Вопрос в следующем:
Добавление заголовка HTTPЗапрос
 ЗаголовокGET.Вставить("Accept-Encoding"          , "gzip, deflate, sdch");

Вернет сжатый ответ.

Все же как его прочитать и получить текст HTML?
9. dimzfresh 79 31.12.15 13:28 Сейчас в теме
(8) Arxxximed, html файл файл можно получить так:

ВременныйФайл = ПолучитьИмяВременногоФайла("html");

ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
Новый СертификатыУдостоверяющихЦентровWindows());

HTTPСоединение = Новый HTTPСоединение(АдресСервера,,,,,,ssl1);

HTTPЗапрос = Новый HTTPЗапрос(URL, ЗаголовокGET);

HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос, ВременныйФайл);

КодСостояния = HTTPОтвет.КодСостояния;

10. Phoenix204 28.11.17 17:36 Сейчас в теме
Здравствуйте, код для яндекса перестал работать (до этого работал)
11. user910617 07.04.19 20:26 Сейчас в теме
Ещё не обновлялась структура http-запроса? Была на хабре статья по поводу изменений
Оставьте свое сообщение