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

28.12.15

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Задача:

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

Статей на тему 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С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

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

36000 руб.

03.08.2020    22204    32    24    

26

SALE! 15%

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

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

17280 14688 руб.

20.12.2024    4384    22    4    

23

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

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки. Основные преимущества: 1. Документация API создаётся автоматически. Удобна для программной обработки. 2. Изменить API столь же просто как настроить отчёт. Можно опубликовать существующий вариант отчёта. 3. Отчёты в API поддерживают параметры (Период, ДатаНачала и др.) 4. При создании простых методов не требуется изменять конфигурацию. 5. Поддерживается работа с планами обмена.<br/> 6. Возможно настроить отправку из 1С данных корреспондирующей системе, для случаев когда 1С сама "знает" какие данные нужно отправить. 7. После записи в 1С Ле Мурр может возвращать соответствие полученных идентификаторов созданным в 1С объектам данных.

36000 руб.

27.09.2024    10153    7    5    

11

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разработана для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

12000 руб.

02.02.2021    20959    60    52    

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

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

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

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

Все же как его прочитать и получить текст HTML?
9. dimzfresh 91 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-запроса? Была на хабре статья по поводу изменений
Для отправки сообщения требуется регистрация/авторизация