Показаны сообщения с ярлыком google. Показать все сообщения
Показаны сообщения с ярлыком google. Показать все сообщения

воскресенье, 28 октября 2018 г.

Google запустил короткий тип доменов, позволяющий быстро создавать новые документы

https://itc.ua/blogs/google-zapustil-korotkiy-tip-domenov-pozvolyayushhiy-byistro-sozdavat-novyie-dokumentyi/

Поисковый гигант Google представил короткие домены для быстрого доступа к сервисам «Google Документы» и «Сайты Google».
Как сообщается, отныне пользователю достаточно набрать в адресной строке ключевое слово и добавить к нему «.new». Например, домен «doc.new» открывает текстовый онлайн-редактор с пустым документом.

Всего Google запустил 15 адресов для быстрого доступа к сервисам:

понедельник, 3 октября 2016 г.

Использование службы геокодирования Google в 1С 7.7 + чтение динамических страниц

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

Решение: Для получения координат ТТ по адресу используется Google Maps Geocoding API, описание и документация здесь: https://developers.google.com/maps/documentation/geocoding/intro?hl=ru


"Быстрое" решение - использование функций v7plus.dll:

Функция ПолучитьОтветСлужбыГеокодирования(_Адрес)
 
    Попытка
        Соединение = СоздатьОбъект("Addin.V7HttpReader");
        Соединение.КоличествоПопытокАвторизации = 10;
    Исключение
        Сообщить("Не удалось создать объект Addin.V7HttpReader!");
        Возврат 0;
    КонецПопытки;
   
    //
можем указать json или xml
    Адрес = "http://maps.googleapis.com/maps/api/geocode/xml?address=";
    Адрес = Адрес + "ukraine" + "," + СокрЛП(_Адрес);
    Адрес = Адрес + "&components=country:UA";
 
    Стр = ""; // сюда вернется xml или json ответ сервера, который 
    Попытка
        Соединение.Получить(Адрес, Стр, 2); //строка
    Исключение
        Сообщить("Неудачная попытка соединения.");
    КонецПопытки;
   
    Возврат стр;

   
КонецФункции

"Быстрое" решение было рабочим, однако, периодически ответ сервера усекался до 1-2 килобайт. При этом если строку запроса вставить в браузер - всегда возвращается нормальный ответ.

Оказалось, проблема известная, рассматривалась неоднократно:

1. V7Plus не полностью выкачивает страничку
"AddIn.V7HttpReader прекрасно работает с любыми страницами и качает всю как надо. Проблема в самих страницах, которые не отдают заголовок "Content-length". Поэтому по-умолчанию используется 1Кб."


2.V7HttpReader метод получить файл
"С помощью метода ПолучитьКакФайл пытаюсь с сайта выгрузить файл xml нужного формата. Проблема - файл не загружается полностью. ... Пробовал по всякому и через ПолучитьКакСтроку и с циклом после получения (типа для докачивания, если оно в фоне).
Все-равно файл загружается не полностью. Если через браузер все скачивается без проблем."

"Это не работает, когда динамически генерируется страница через пост-запрос. ПолучитьКакФайл работает для скачивания ТОЛЬКО статического содержимого."

И приводится код решения:
    Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
    Скрипт.language = "vbscript";
          
    x = CreateObject("Microsoft.XMLHTTP");
    x.Open("GET", АдресСтраницы, 0,"","");
    x.Send();
          
    s = CreateObject("ADODB.Stream");
    s.Mode = 3;
    s.Type = 1;
    s.Open();
          
    Скрипт.AddObject("s",s);
    Скрипт.AddObject("x",x);
    Скрипт.Eval("s.Write(x.responseBody)");
          
    s.SaveToFile(ИмяФайлаЗагрузки, 2);
3. Наиболее подробно и полно вопрос рассматривается здесь: Мои опыты чтения динамических WEB-страниц
  • Вариант 1-5 - различные модификации использования V7HttpReader, и делается вывод, что внешняя компонента v7plus.dll и ее объект AddIn.V7HttpReader не годятся для чтения  динамических WEB-страниц.
  • Вариант 6:  ФС.КопироватьФайл(Адрес,Результат) - нерабочий
  • Вариант 7: WinHttp.WinHttpRequest.5.1
  • Вариант 8: InternetExplorer.Application
  • Вариант 9. MSXML2.XMLHTTP
  • Вариант 10. WinHttp.WinHttpRequest.5.1 + MSScriptControl
  • Вариант 11.MSXML2.XMLHTTP +  MSScriptControl  + VBScript
  • Вариант 12. MSXML2.XMLHTTP (http-test.vbs + WScript.Shell)
  • Вариант 13. Microsoft.XMLHTTP+ MSScriptControl+ADODB.Stream

В итоге, пришлось переписать процедуру на вариант с использованием Microsoft.XMLHTTP +
ADODB.Stream + MSScriptControl.ScriptControl.

Код функции под катом: